What's new

Quest (konfiguracja w duzym zakresie)

Status
Not open for further replies.

Sassin

Forum friend
Joined
Jun 13, 2009
Messages
1,281
Reaction score
107
Odp: Quest (konfiguracja w duzym zakresie)

Dodaj jeszcze jedn? rzecz a b?de zadowolony. U?ywanie jednego skryptu do wykonania wielu quest?w.(Czyli jeden skrypt odpowiadaj?cy za 10 quest?w)
Przyk?adowe u?ycie mo?esz znale?? tutaj
http://tibia.net.pl/actions/294319-tfs-dzwignia-na-przedmioty.html
Autorstwa [USER]Stelma[/USER].
Jakby? to doda? wtedy tw?j skrypt mia?by nawet spory sens, nie trzeba by by?o dodawa? na ka?dy quest kolejnego pliku, co za tym idzie mniej zawalony folder actions.

Wydaje mi si? ?e to nie jest dobry pomys?. Widzisz przy du?ej ilo?ci quest?w w jednym pliku mo?e powodowa? lagi to, jak dwie osoby zrobi? jednocze?nie 2 questy z jednego pliku.

###down
Logiczne jest chyba i? jest to zale?ne jeszcze od dedyka, poza tym tabeli tu nie ma, a ja komentowa?em ten skrypt, a nie ten co Ty by? zrobi?... ; )

Silnik wczytuje skrypt 1x dla wykonania 1 akcji, nawet jak klikasz food to za kazdym razem wczytuje go od nowa, wi?c lepiej rozdzieli? questy na wiecej plik?w, ten plik, ktory daje tiemy w bp, i tak i tak bedzie pasowac do tylko 1 questu na servie, chyba ze ktos zrobi 20 takich samych. Ile by skrzynk czy czgokolwiek nienastawia?, w pliku zadeklarowana jest tylko 1 nagroda, jaka by ona niebyla.

W pewnym sensie masz racje, lecz je?li b?dzie wi?cej skrypt?w to tylko b?dzie to za?mieca? folder, a po co? Mo?na zrobi? du?o w jednym (w granicach rozs?dku), ja osobi?cie (dzi?ki pomys?owi autora tematu) robi? tak ?e, dodaje do jednego skryptu 10 quest?w i staram si?, aby by?y w modsach. ; )

Pozdrawiam,
Sassin
 
Last edited by a moderator:

Stelma

Active User
Joined
Jan 6, 2009
Messages
114
Reaction score
19
Odp: Quest (konfiguracja w duzym zakresie)

@up

Mylisz si? je?eli wywali tabelke przed funkcje to ?eby tam mia? i 1k quest?w to skrypt b?dzie nadal ?miga? a? mi?o.


Jednak wad? takiego rozwi?zania jest utrzymanie przez serwer pewnej ilo?ci zmiennych w pami?ci. Ale ja tam i tak to robi? nawet w pojedy?czych skryptach i przy rl mapie i 90% quest?w nie odczu?em lag?w ani nic ;p

Tam si? nie zag??bia?em w ?r?d?a projektu jednak twierdz? i? tfs tworzy sobie odpowiednie typy dla zmiennych w czasie ich przypisywania (chyba ?e to variable). Jednak w?tpie by ekipa tworz?ca silnik nie pomy?la?a o wydajno?ci tak wi?c. Z 1k zmiennych (takich przyziemnych) b?dzie zajmowa?o mo?e 2-4 Kb w pami?ci;P
 

Matixy

Active User
Joined
Jun 15, 2008
Messages
123
Reaction score
2
Odp: Quest (konfiguracja w duzym zakresie)

Silnik wczytuje skrypt 1x dla wykonania 1 akcji, nawet jak klikasz food to za kazdym razem wczytuje go od nowa, wi?c lepiej rozdzieli? questy na wiecej plik?w, ten plik, ktory daje tiemy w bp, i tak i tak bedzie pasowac do tylko 1 questu na servie, chyba ze ktos zrobi 20 takich samych. Ile by skrzynk czy czgokolwiek nienastawia?, w pliku zadeklarowana jest tylko 1 nagroda, jaka by ona niebyla.
 

YoS

Advanced User
Joined
Aug 29, 2008
Messages
410
Reaction score
32
Odp: Quest (konfiguracja w duzym zakresie)

Wersja V1.41
Code:
--By kalan

local config = {nagrody = {2160, 2160, 2160, 2161, 2162}, ilosc = {5, 1, 56,1,1}, lvl = 100, bp = 1988, queststorage = 12345, storagevalute = 1, effect = 29 ,effectno = 2}
function onUse(cid, item, frompos, item2, topos)


playerlvl = getPlayerLevel(cid)
playerpos = getPlayerPosition(cid)
playerstorage = getPlayerStorageValue(cid,config.queststorage)
capplayer = getPlayerFreeCap(cid)


if playerstorage == -1 then
		if playerlvl >= config.lvl then
			bps = doCreateItemEx(cid, config.bp, 1)
			for i = 1, #config.nagrody and #config.ilosc do
			doAddContainerItem(bps, config.nagrody[i], config.ilosc[i])
			end
			capnagroda = getItemWeight(bps)
			if capplayer >= capnagroda then
				if(doPlayerAddItemEx(cid, bps) ~= RETURNVALUE_NOERROR) then	
					doPlayerSendTextMessage(cid,22,"You have found Quest, But You dont have Space in bp!")
					else					
						doPlayerSendTextMessage(cid,22,"You have found Quest, here is Your reward")
						doSendMagicEffect(frompos, config.effect)
						doSendMagicEffect(playerpos, config.effect)
						setPlayerStorageValue(cid,config.queststorage,config.storagevalute)
						
					end
		
				else
					doPlayerSendTextMessage(cid,22,"You have found Quest, But You dont Have Cap for reward!")
				end
			else
				doPlayerSendTextMessage(cid,22,"You have found Quest, BUT Your lvl is too low!")
			end
	
	else
		doPlayerSendTextMessage(cid,22,"You have found Quest, BUT You took the Reward!")

	end
		doSendMagicEffect(playerpos, config.effectno)
		doSendMagicEffect(frompos, config.effectno)
	return true
end
zgodnie z tym jak chcieliscie - zre mniej pamieci :) - ss nie dodaje bo sorrkens ale niczym sie to nie rozni od poprzednich wersji :)
 

YoS

Advanced User
Joined
Aug 29, 2008
Messages
410
Reaction score
32
Odp: Quest (konfiguracja w duzym zakresie)

@@@@ ReFleSZ @@@@@

i btw:
V 1.5
Code:
--By kalan
local configs = {
                      [1060] = {nagrody = {2160, 2160, 2160, 2161, 2162}, ilosc = {1, 1, 1,1,1}, addexp = 3000, lvl = 100, bp = 1988, queststorage = 19498, storagevalute = 1, effectno = 2},
                      [1213] = {nagrody = {2160, 2160, 2160, 2161, 2162}, ilosc = {5, 1, 56,1,1}, addexp = 3000, lvl = 100, bp = 1988, queststorage = 11499, storagevalute = 1, effectno = 2}
                    }

function onUse(cid, item, frompos, item2, topos)
--local config = configs[item.actionid]
local config = configs[item.uid]
if config == nil then
 doPlayerSendTextMessage(cid,22,"Please contact to GM")
 return true
end

if getPlayerStorageValue(cid,config.queststorage) == -1 then
		if getPlayerLevel(cid) >= config.lvl then
                                        bps = doCreateItemEx(cid, config.bp, 1)
                                        for i = 1, #config.nagrody and #config.ilosc do
                                            doAddContainerItem(bps, config.nagrody[i], config.ilosc[i])
                                        end
			if getPlayerFreeCap(cid) >= getItemWeight(bps) then
				if(doPlayerAddItemEx(cid, bps) ~= RETURNVALUE_NOERROR) then	
					doPlayerSendTextMessage(cid,22,"You have found Quest, But You dont have Space in bp!")
					else	
						doPlayerSendTextMessage(cid,22,"You have found Quest, here is Your reward")
                                                 effectloss = math.random(1, 68)	-- Tutaj wstawiasz efekt kt??ry si?? wykona w przypadku otrzymania nagrody
						doSendMagicEffect(frompos, effectloss)
						doSendMagicEffect(getPlayerPosition(cid), effectloss)
						doPlayerAddExp(cid, config.addexp)
						setPlayerStorageValue(cid,config.queststorage,config.storagevalute)
                                                                        return true
					end
				else
					doPlayerSendTextMessage(cid,22,"You have found Quest, But You dont Have Cap for reward!")
				end
			else
				doPlayerSendTextMessage(cid,22,"You have found Quest, BUT Your lvl is too low!")
			end
	else
		doPlayerSendTextMessage(cid,22,"You have found Quest, BUT You took the Reward!")
	end
  doSendMagicEffect(getPlayerPosition(cid), config.effectno)
  doSendMagicEffect(frompos, config.effectno)
  return true
end

:D tak jak prosiliscie.. - jest tablica na poczatku ;]
 

YoS

Advanced User
Joined
Aug 29, 2008
Messages
410
Reaction score
32
Odp: Quest (konfiguracja w duzym zakresie)

~~~~~F5~~~~
Prosze o komenty
 

Aragornkk

Senior User
Joined
Oct 11, 2008
Messages
705
Reaction score
44
Odp: Quest (konfiguracja w duzym zakresie)

I co teraz nam mo?na si? przyczepi? :d
Teraz jedynie co mo?emy to pogratulowa? skryptu. Mo?esz zobaczy? teraz jak wygl?da czysty quest system z tfsa, a jak tw?j.
Por?wnanie jest bardzo proste, je?eli zale?y ci na wydajno?ci u?ywasz tfsowskiego questsystemu, je?eli lubisz edytowa?, dodawa? uwa?am ?e ten skrypt jest do tego najlepszy.





#Oftopic
I`ll Back.
 

Haate

User
Joined
Jan 2, 2010
Messages
49
Reaction score
2
Odp: Quest (konfiguracja w duzym zakresie)

Wyskakuje mi ci?gle Please contact with GM...

Code:
<action uniqueid="1060" event="script" value="simple quests/simplequest.lua"/>
	<action uniqueid="1213" event="script" value="simple quests/simplequest.lua"/>

w skrypcie nic nie robi?em, chcia?em sprawdzi? czy dzia?a...
 

YoS

Advanced User
Joined
Aug 29, 2008
Messages
410
Reaction score
32
Odp: Quest (konfiguracja w duzym zakresie)

@up
if config == nil then
doPlayerSendTextMessage(cid,22,"Please contact to GM")
return true
end
ten warunek zostal spelniony wiec musiales cos zrobic z configs'em bo to dziala na 100% testowalem wiele razy

@topic
Ja bym prosil o wiecej komentow
 
T

Tairens

Guest
Odp: Quest (konfiguracja w duzym zakresie)

Code:
doSendMagicEffect(getPlayerPosition(cid), config.effectno)
doSendMagicEffect(frompos, config.effectno)
Powiedz mi tylko po co pobierasz pozycj? gracza skoro frompos to pozycja z kt?rej zosta? wywo?any skrypt, czyli w tym wypadku pozycja danego gracza.
Code:
effectloss = math.random(1, 68)
Dobrym zwyczajem wszystkie zmienne deklaruj na pocz?tku, a w ?rodku nadawaj im warto?ci.
Code:
getPlayerStorageValue(cid,config.queststorage) == -1
Je?eli skrzynka jest 5 misj? quest'a to Tw?j skrypt jest bezu?yteczny.
Code:
if getPlayerFreeCap(cid) >= getItemWeight(bps) then
if(doPlayerAddItemEx(cid, bps) ~= RETURNVALUE_NOERROR) then
Nie rozdrabnia?bym tego na dwa bloki warunkowe ze wzgl?du na jako?? kodu.
 

Haate

User
Joined
Jan 2, 2010
Messages
49
Reaction score
2
Odp: Quest (konfiguracja w duzym zakresie)

Yos
Ja po prostu wklei?em skrypta jak to zawsze robi?, potem edytuje co trzeba mi.
W action id tylko zrobi?em i ziup w??czam mapedytora ustawiam aid i na serva a tu tamto, jeszcze pokombinuje.

P.S.
Mam to zostawi? rozdwojone:
Code:
<action actionid="1060" event="script" value="simple quests/simplequest.lua"/>
<action actionid="1213" event="script" value="simple quests/simplequest.lua"/>

czy z??czy? w jedn? linijke pod innym action i normalnie w map editorze wstawi? i b?dzie dzia?a??
 
Last edited:

YoS

Advanced User
Joined
Aug 29, 2008
Messages
410
Reaction score
32
Odp: Quest (konfiguracja w duzym zakresie)

--- do moda : prosze nie warnowac za nowy post ale chce pomoc rozwiazac problem---

to tak:
[fragment kodu]
Code:
--local config = configs[item.actionid]
local config = configs[item.uid]
if config == nil then
 doPlayerSendTextMessage(cid,22,"Please contact to GM")
 return true
end
jak widac
Code:
--local config = configs[item.actionid]
local config = configs[item.uid]
jest zaznaczone ze ma sprawdzac UID nie AID ;) chyba ze zrobisz to tak:
Code:
local config = configs[item.actionid]
--local config = configs[item.uid]
i dzialac bedzie;):)
 

warchol103

User
Joined
May 13, 2009
Messages
27
Reaction score
1
Odp: Quest (konfiguracja w duzym zakresie)

a jak zrobic zeby item mial wlasne aid jak go wyjmiemy ? bo chce klucz z aid wsadzic do questa ;p
 

YoS

Advanced User
Joined
Aug 29, 2008
Messages
410
Reaction score
32
Odp: Quest (konfiguracja w duzym zakresie)

wiesz.. sam sie z tym meczylem.. i nie wiem czy to dziala:
Code:
local cos = doPlayerAddItem(cid, id, ilosc)
doSetItemActionId(cos, wartosc)
ogolnie nie wiem czy zadziala;]


Reflesz! i ogolnie f5
 
Last edited:

Aragornkk

Senior User
Joined
Oct 11, 2008
Messages
705
Reaction score
44
Odp: Quest (konfiguracja w duzym zakresie)

doSetItemActionId(cos, wartosc)
nie ma w najnowszych tfsach jak dobrze pami?tam, trzeba da? setatribute.

#Topic
Mo?esz jeszcze doda? takie co?:
obok ilo?ci by?oby w tabeli acid przedmiot?w, niestety by?o by to troch? niepor?czne.
 

YoS

Advanced User
Joined
Aug 29, 2008
Messages
410
Reaction score
32
Odp: Quest (konfiguracja w duzym zakresie)

@up
ale po co to?;/ to przeciez bez sensu... zreszta jak sobie to widzisz?
mm jest actionid bo przeciez w attr jest to uzywane i dziala


@topic
F5 PROSZE O KOMENTY
 

laza

User
Joined
Dec 20, 2009
Messages
31
Reaction score
2
Odp: Quest (konfiguracja w duzym zakresie)

ee a dajcie linka na ten ots
zgury dzieki
 
Status
Not open for further replies.
Top