Quest (konfiguracja w duzym zakresie)

Status
Zamknięty.
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
 
Ostatnio edytowane przez moderatora:
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
 
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.
 
Odp: Quest (konfiguracja w duzym zakresie)

Wersja V1.41
Kod:
--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 :)
 
Odp: Quest (konfiguracja w duzym zakresie)

@@@@ ReFleSZ @@@@@

i btw:
V 1.5
Kod:
--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 ;]
 
Odp: Quest (konfiguracja w duzym zakresie)

~~~~~F5~~~~
Prosze o komenty
 
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.
 
Odp: Quest (konfiguracja w duzym zakresie)

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

Kod:
<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...
 
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
 
Odp: Quest (konfiguracja w duzym zakresie)

Kod:
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.
Kod:
effectloss = math.random(1, 68)
Dobrym zwyczajem wszystkie zmienne deklaruj na pocz?tku, a w ?rodku nadawaj im warto?ci.
Kod:
getPlayerStorageValue(cid,config.queststorage) == -1
Je?eli skrzynka jest 5 misj? quest'a to Tw?j skrypt jest bezu?yteczny.
Kod:
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.
 
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:
Kod:
<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??
 
Ostatnia edycja:
Odp: Quest (konfiguracja w duzym zakresie)

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

to tak:
[fragment kodu]
Kod:
--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
Kod:
--local config = configs[item.actionid]
local config = configs[item.uid]
jest zaznaczone ze ma sprawdzac UID nie AID ;) chyba ze zrobisz to tak:
Kod:
local config = configs[item.actionid]
--local config = configs[item.uid]
i dzialac bedzie;):)
 
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
 
Odp: Quest (konfiguracja w duzym zakresie)

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


Reflesz! i ogolnie f5
 
Ostatnia edycja:
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.
 
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
 
Odp: Quest (konfiguracja w duzym zakresie)

ee a dajcie linka na ten ots
zgury dzieki
 
Status
Zamknięty.
Back
Do góry