Jump to content
Araştır
  • Diğer seçenekler ...
Sonuçları bul ...
Sonuçları bul ...
aakinci

Bir Görevi Sınırsız Yapılabilir Hale Getirme

Önerilen Mesajlar

Arkadaşlar örnek olarak 52 level de açılan Haunga Warrior görevini Sınırsız yapılabilir hale yani tekrarlanabilir hale getirmek istiyorum. DB de tekrarlanabilir görev olmadığı için bakıp örnek çıkartamadım.

Aşağıdaki gibi QUEST_HELPER tablosunda aşağıdaki görseldeki kırmızı yuvarlak ile gösterdiğim yeri 2 den 4 e çektim ve artık görev seri olarak alınabiliryor. Yani bir defa yapıldığında NPC den kaybolmuyor. Buraya kadar sorun yok.

Ancak 2. sefer aldığımda görev otomatik olarak yapılmış gösteriyor. Yani DB de benim o ID li görevi yaptığımın kaydı tutulduğundan doalyı kestiğim Haunga Warrior sayısı görevi tamamlamama neden oluyor. Ben her görevi verdiğimde DB de görev ile ilgili olan kaydım silinsin ve görevi aldığımda 0 dan gidip yaratığı kesmemi istesin istiyorum. Bunu sağlamak için ne yapmam gerek?

ER7RQv.png

İletiyi paylaş


Link to post
Sitelerde Paylaş
Admin

ben hiç kurcalamadım twostarsın kaynak kodlarını fakat mantıken saveevent olayını görevi bitirdiği zaman tekrar devreye sokup başladığı anki haline getirebilirsin eğer fonksiyonda o özellik var ise

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
lua da mı yapacağım hocam bu işlemi?


evet runexchange nereye bağladın ? oraya bağladığın yere savenum da ekliceksin. oraya 4 = nIndex olarak yazacaksın. yani bEventStatus :4 = nIndex.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
SavEvent'i kaldırırsan görev gelme erkanı ortadan gitmiyormuydu?


evet hocam saveeventi değiştirince durmadan görevi almak bile gerekmiyor. Seri seri veriliyor.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
evet runexchange nereye bağladın ? oraya bağladığın yere savenum da ekliceksin. oraya 4 = nIndex olarak yazacaksın. yani bEventStatus :4 = nIndex.


if (EVENT == 8059) then
RunExchange(UID,952)
SaveEvent(UID, 8981);
end


exchange kısmı bu hocam mesela burada ne gibi bir değişim yapacağım?

Bu da luanın o görev için tamamı.
Alıntı

if (EVENT == 8050) then -- 47 Level Hornet
SelectMsg(UID, 2, 204, 8245, NPC, 3003, 8051);
end

if (EVENT == 8051) then
SaveEvent(UID, 8979);
end

if (EVENT == 8052) then
MonsterSub = ExistMonsterQuestSub(UID);
if (MonsterSub == 0) then
SelectMsg(UID, 2, 204, 8246, NPC, 10, 8060);
else
SelectMsg(UID, 2, 204, 8254, NPC, 10, 193);
end
end

if (EVENT == 8060) then
SelectMsg(UID, 4, 204, 8247, NPC, 22, 8053, 23, 8054);
end

if (EVENT == 8053) then
SaveEvent(UID, 8980);
end

if (EVENT == 8054) then
SaveEvent(UID, 8983);
end

if (EVENT == 8055) then
SelectMsg(UID, 2, 204, 8418, NPC, 3007, 193);
SaveEvent(UID, 8982);
end

if (EVENT == 8057) then
MonsterCount = CountMonsterQuestSub(UID, 204, 1);
if (MonsterCount SelectMsg(UID, 2, 204, 8419, NPC, 18, 8058);
else
SelectMsg(UID, 4, 204, 8248, NPC, 41, 8059, 27, 193);
end
end

if (EVENT == 8058) then
ShowMap(UID, 27);
end

if (EVENT == 8059) then
RunExchange(UID,952)
SaveEvent(UID, 8981);
end

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
if (EVENT == 8059) then

RunExchange(UID,952)
SaveEvent(UID, 8981);
end


exchange kısmı bu hocam mesela burada ne gibi bir değişim yapacağım?

Bu da luanın o görev için tamamı.


önce şu işlemi yap :
UPDATE USERDATA SET sQuestCount='0',sQuestDataCount='0'

sonra :

SaveEvent(UID,8983);
veya
SaveNum(UID,8983);

Kolay Gelsin...

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
önce şu işlemi yap :
UPDATE USERDATA SET sQuestCount='0',sQuestDataCount='0'

sonra :

SaveEvent(UID,8983);
veya
SaveNum(UID,8983);

Kolay Gelsin...


hocam görevi yeniden aldığımda yine otomatik tamamlanıyor. :(

İletiyi paylaş


Link to post
Sitelerde Paylaş

İstediği şeyler 0 olduğu için olabilir yani ortada isteyeceği birşey olmadığından tamamlanmış olabilir. Ben görevleri test ederken db den sürekli karakterin görevini sıfırlamak yerine lua dan kaydetmesini kaldırmıştım görevi yapsam da yapmamış olarak kalıyordu ama uzun zaman oldu yanlış hatırlıyorda olabilirim.

İletiyi paylaş


Link to post
Sitelerde Paylaş

Bahsettiğin görev ile alakalı QUEST_HELPER girdileri şu şekilde;

Alıntı

8978 2 47 0 5 2 1 2 14406 204 255 8050 0 0 0 14406_Guardsman.lua
8979 2 47 0 5 2 1 2 14406 204 0 8052 0 952 8158 14406_Guardsman.lua
8980 2 47 0 5 2 1 2 14406 204 1 8057 8055 952 8158 14406_Guardsman.lua
8981 2 47 0 5 2 1 2 14406 204 2 190 0 952 8158 14406_Guardsman.lua
8982 2 47 0 5 2 1 2 14406 204 3 8057 0 952 8158 14406_Guardsman.lua
8983 2 47 0 5 2 1 2 14406 204 4 8052 0 952 8158 14406_Guardsman.lua


Bu senin görevi tamamlayan exchange kısmın.
Alıntı

if (EVENT == 8059) then
RunExchange(UID,952)
SaveEvent(UID, 8981);
end


952 nolu exchangeyi çalıştırıp, 8981 nolu QUEST_HELPER girdisini işletiyor. yani, '204' idsine sahip questi, '2' durumuna getiriyor, yani tamamlanmış. Senin yapmak istediğin şey için,
SaveEvent(UID, 8981);'in altına
SaveEvent(UID,8983); yazarsan, görevi önce teslim eder, yapılmış duruma getirir, daha sonra hiç yapılmamış duruma döndürür.

İletiyi paylaş


Link to post
Sitelerde Paylaş

Konuyla alakasız fakat, kullandığın scriptte;

RunExchange(UID,952);
SaveEvent(UID, 8981);

yerine

if RunExchange(UID,952) > 0 then
SaveEvent(UID, 8981);
end

şeklinde kullanılması daha sağlıklı olur. RunExchange'nin sonucuna bakılmaksızın görev bitmiş duruma getiriliyor. Bu durumda eğer RunExchange fonksiyonu, eksik bir materyalden dolayı takası gerçekleştirmese dahi görev bitti olarak etiketleneceğinden, oyuncu questten hiçbir ödül alamadığı halde quest tamamlanmış olur. Bunlara dikkat edin.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Bahsettiğin görev ile alakalı QUEST_HELPER girdileri şu şekilde;



Bu senin görevi tamamlayan exchange kısmın.


952 nolu exchangeyi çalıştırıp, 8981 nolu QUEST_HELPER girdisini işletiyor. yani, '204' idsine sahip questi, '2' durumuna getiriyor, yani tamamlanmış. Senin yapmak istediğin şey için,
SaveEvent(UID, 8981);'in altına
SaveEvent(UID,8983); yazarsan, görevi önce teslim eder, yapılmış duruma getirir, daha sonra hiç yapılmamış duruma döndürür.


hocam dediğinizi yaptım ancak yine görev 2. alınışında otomatik tamamlanıyor. Ayrıca görev giveup yani alındıktan sonra bir defa silinip yeniden alındığında bu sefer sanki hiç yapılmamış gibi baştan yapmak gerekiyor. Yani giveup için hangi fonksiyon kullanılıyor ise aslında görevi teslim ederken o komutu da eklesek ve çalıştırsak sorun kalmayacak sanki.
Olayın daha anlaşılır olması adına video da paylaşıyorum.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
İstediği şeyler 0 olduğu için olabilir yani ortada isteyeceği birşey olmadığından tamamlanmış olabilir. Ben görevleri test ederken db den sürekli karakterin görevini sıfırlamak yerine lua dan kaydetmesini kaldırmıştım görevi yapsam da yapmamış olarak kalıyordu ama uzun zaman oldu yanlış hatırlıyorda olabilirim.


hocam luadan kaydı kaldıramıyoruz. Eğer kaydetmeyi kaldırırsanız görevi verdiğinizde sizden silinmiyor. Dolayısı ile görevi almaya gerek kalmadan sürekli verilebilir hale geliyor. Kaydedildiğinde görevin verilme aşamasında sizden silinmesini sağlıyor.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Hornet görevinin quest_helper tablosundaki satırlarını atarmısın.İlk sayfada paylaştığın quest_helper satırları hornete ait değil


Buyrun hocam:
dG6JqQ.png

İletiyi paylaş


Link to post
Sitelerde Paylaş

lua:

if (EVENT == 8052) then 

MonsterSub = ExistMonsterQuestSub(UID);
if (MonsterSub == 0) then
SelectMsg(UID, 4, 204, 8158, NPC, 22, 8053, 23, 193);
else
SelectMsg(UID, 2, 204, 8158, NPC, 27, 193);
end
end

-- Quest Accept
if (EVENT == 8053) then
SaveEvent(UID, 8980);
end

-- Check Quest
if (EVENT == 8057) then
MobCount1 = CountMonsterQuestSub(UID, 204, 1);
if(MobCount1 SelectMsg(UID, 2, 204, 8158, NPC, 18, 8058);
else
SelectMsg(UID, 4, 204, 8145, NPC, 29, 8061, 27, 193);
end
end

-- Show Map
if (EVENT == 8058) then
ShowMap(UID,27); -- NPC : Hornet
end

-- Complete Button
if (EVENT == 8061) then
Check = CheckExchange(UID, 952);
if (Check) then
RunCountExchange(UID, 952,0);
end
SaveEvent(UID,8983);---8981 di
end


quest_helper:
8979	Hornet Hunt	2	47	0	5	2	1	2	14406	204	0	8052	0	952	8158	14406_Guardsman.lua                     	0	827	31	0	0	Hunt

8980 Hornet Hunt 2 47 0 5 2 1 2 14406 204 1 8057 8055 952 8158 14406_Guardsman.lua 0 827 31 0 0 Hunt
8981 Hornet Hunt 2 47 0 5 2 1 2 14406 204 2 190 0 952 8158 14406_Guardsman.lua 0 827 31 0 0 Hunt
8982 Hornet Hunt 2 47 0 5 2 1 2 14406 204 3 8057 0 952 8158 14406_Guardsman.lua 0 827 31 0 0 Hunt
8983 Hornet Hunt 2 47 0 5 2 1 2 14406 204 4 8052 0 952 8158 14406_Guardsman.lua 0 827 31 0 0 Hunt


benim sistemim biraz farklı sen fazda kolonları silersin quest helper icin.
Bende calısıyor suan tekrarlanabilir olarak sende hata verirse söyle.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
lua:
if (EVENT == 8052) then 

MonsterSub = ExistMonsterQuestSub(UID);
if (MonsterSub == 0) then
SelectMsg(UID, 4, 204, 8158, NPC, 22, 8053, 23, 193);
else
SelectMsg(UID, 2, 204, 8158, NPC, 27, 193);
end
end

-- Quest Accept
if (EVENT == 8053) then
SaveEvent(UID, 8980);
end

-- Check Quest
if (EVENT == 8057) then
MobCount1 = CountMonsterQuestSub(UID, 204, 1);
if(MobCount1 SelectMsg(UID, 2, 204, 8158, NPC, 18, 8058);
else
SelectMsg(UID, 4, 204, 8145, NPC, 29, 8061, 27, 193);
end
end

-- Show Map
if (EVENT == 8058) then
ShowMap(UID,27); -- NPC : Hornet
end

-- Complete Button
if (EVENT == 8061) then
Check = CheckExchange(UID, 952);
if (Check) then
RunCountExchange(UID, 952,0);
end
SaveEvent(UID,8983);---8981 di
end


quest_helper:
8979	Hornet Hunt	2	47	0	5	2	1	2	14406	204	0	8052	0	952	8158	14406_Guardsman.lua                     	0	827	31	0	0	Hunt

8980 Hornet Hunt 2 47 0 5 2 1 2 14406 204 1 8057 8055 952 8158 14406_Guardsman.lua 0 827 31 0 0 Hunt
8981 Hornet Hunt 2 47 0 5 2 1 2 14406 204 2 190 0 952 8158 14406_Guardsman.lua 0 827 31 0 0 Hunt
8982 Hornet Hunt 2 47 0 5 2 1 2 14406 204 3 8057 0 952 8158 14406_Guardsman.lua 0 827 31 0 0 Hunt
8983 Hornet Hunt 2 47 0 5 2 1 2 14406 204 4 8052 0 952 8158 14406_Guardsman.lua 0 827 31 0 0 Hunt


benim sistemim biraz farklı sen fazda kolonları silersin quest helper icin.
Bende calısıyor suan tekrarlanabilir olarak sende hata verirse söyle.


hocam lua yı metin belgesi olarak atabilir misiniz? kopyalama yapılmıyor forumda.

İletiyi paylaş


Link to post
Sitelerde Paylaş

×
×
  • Yeni Oluştur...