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

Błąd z Misja PokeTibia


szakal2218

Rekomendowane odpowiedzi

Opublikowano

Witam mam pytanie odnośnie misji w PokeTibi mianowicie mam taką misje:

 

 

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end






local task = {
["Junior"] = {{"Abra", 20}, {"Kadabra", 20}, {"Alakazam", 25}, {"Hypno", 20}},
}
       
        if msgcontains(msg, 'task') or msgcontains(msg, 'Task') then
           if isMyTaskComplete(cid, getNpcCid()) then
              selfSay("Wow już zakonczyles swoje zadanie! Ok odbierz swoja nagrode!", cid)
              doPlayerAddItem(cid, 2152, 5)  --premio
              local sto = getMyTaskSto(cid, getNpcCid())
              setPlayerStorageValue(cid, sto, -1)
              talkState[cid] = 0
              return true
           else
              selfSay("Jest to trudniejsze zadanie , musisz zabic {20 Abras, 20 Kadabras, 20 Hypnos i 25 Alakazams}, czy akceptujesz zadanie?", cid)
              talkState[cid] = 2  
           end   
  elseif (msgcontains(msg, 'tak') or msgcontains(msg, 'Tak')) and talkState[cid] == 2 then
           if getMyTaskSto(cid, getNpcCid()) ~= -1 then
              selfSay("W takim razie biegnij wypelnic zadanie!", cid)
              talkState[cid] = 0
              return true
           end
           local sto = getFreeTaskStorage(cid)
           if sto == -1 then 
              selfSay("Nie mozna wziasc wiecej zadan! Masz juz  wypelnione "..(maxTasks).." zadania!", cid)
              talkState[cid] = 0
              return true
           end
                  
           selfSay("OK, a nastepnie ... Idz zabij swoje cele!", cid)
           setStorageArray(cid, sto, task)
           talkState[cid] = 0
           return true
        end


return true
end


npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())  
 
 
 
a w grze tylko dochodzi do tego momentu:
 
1742cddb3a31a.png
 
i nie działa już odpowiedz  "tak"
 
może ktoś mi z tym pomóc ?
 
 
-----------------------------------------------------------------------------------
Mam także pytanie jak dodać tą misje do Quest Loga w grze?
 
Wiem że trzeba wejść do
data/XML/quests.xml
 
i wpisać
 
<quest name="--?--" startstorageid="1--?--" startstoragevalue="--?--">
    <mission name="W--?--" storageid="--?--" startvalue="--?--" endvalue="--?--">
<missionstate id="0" description="--?--"/>
        <missionstate id="1" description="--?--"/>
</mission>
</quest>
 
 
tylko jak wypełnić pola "--?--" ?
 
Z góry dziękuje za pomoc :)
 
 
 
 
 
 
 
Opublikowano

Co to za TFS ?

 

Strasznie zagmatwany ten npc ale logicznie powinno być wszystko ok. Na pewno nie ma nic w konsoli ?

 

Sprawdź tak:

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end






local task = {
["Junior"] = {{"Abra", 20}, {"Kadabra", 20}, {"Alakazam", 25}, {"Hypno", 20}},
}
       
        if msgcontains(msg, 'task') or msgcontains(msg, 'Task') then
           if isMyTaskComplete(cid, getNpcCid()) then
              selfSay("Wow już zakonczyles swoje zadanie! Ok odbierz swoja nagrode!", cid)
              doPlayerAddItem(cid, 2152, 5)  --premio
              local sto = getMyTaskSto(cid, getNpcCid())
              setPlayerStorageValue(cid, sto, -1)
              talkState[cid] = 0
              return true
           else
              selfSay("Jest to trudniejsze zadanie , musisz zabic {20 Abras, 20 Kadabras, 20 Hypnos i 25 Alakazams}, czy akceptujesz zadanie?", cid)
              talkState[cid] = 2  
           end   
		elseif ((msgcontains(msg, 'tak') or msgcontains(msg, 'Tak')) and talkState[cid] == 2) then
           if getMyTaskSto(cid, getNpcCid()) ~= -1 then
              selfSay("W takim razie biegnij wypelnic zadanie!", cid)
              talkState[cid] = 0
              return true
           end
           local sto = getFreeTaskStorage(cid)
           if sto == -1 then 
              selfSay("Nie mozna wziasc wiecej zadan! Masz juz  wypelnione "..maxTasks.." zadania!", cid)
              talkState[cid] = 0
              return true
           end
                  
           selfSay("OK, a nastepnie ... Idz zabij swoje cele!", cid)
           setStorageArray(cid, sto, task)
           talkState[cid] = 0
           return true
        end


return true
end


npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())  

Co do questloga łap przykład:

<quest name="The Pirate Pact" startstorageid="29003" startstoragevalue="1">
    <mission name="Trust" storageid="1701" startvalue="1" endvalue="3">
		<missionstate id="0" description="Find the ship and defeat his captain. For this you need a suitable preparation. Ask for it Adam."/>
                <missionstate id="1" description="Now you can kill Pirate Boss in Ship."/>
		<missionstate id="2" description="You can trade with pirates."/>
	</mission>
    </quest>
Opublikowano

Własnie w konsoli nic nie wyskakuje źle a sam skrypt jest też moim zdaniem ok a nie da się misji zaakceptować :/

 

Może lepiej i szybciej napisać nowy skrypt ?

 

 

Ok dzieki zaraz sprawdzę tego questloga

Opublikowano

Masz dodanych dużo nowych funkcji 

isMyTaskComplete
getNpcCid
getMyTaskSto
setStorageArray
getFreeTaskStorage

i nie wiadomo co one dokładnie robią, tak samo jak masz np. zmienną maxTasks ale nie wiadomo jaka jest jej wartość i nieużytą tabele

Opublikowano

Akurat inny task działa którego edytowałem na innej podstawie a ten jakoś nie chce zatrybić skopiuje skrypt z tego działającego i zobacze czy zadziała.

 

Odnośnie  questloga to

<quest name="Obojętnie co wpisać ?" startstorageid="Liczba z ?" startstoragevalue="1">

<mission name="Obojętnie co wpisać" storageid="Liczba z ?" startvalue="1" endvalue="?">

Opublikowano

No u ciebie jest problem ze startstorageid i storageid ponieważ musisz to sobie "wyczytać" z tych dodanych funkcji.

 

Strzelam, że to te są za to odpowiedzialne:

isMyTaskComplete(cid, getNpcCid())
local sto = getMyTaskSto(cid, getNpcCid())

Czyli startstorageid to cid NPC a storageid musisz wyczytać z funkcji getFreeTaskStorage(cid)

 

Mission name i Quest name wpisujesz nazwy swoje jakie chcesz

Opublikowano

Błąd w misji był taki że chodziło o to że nie mogłem ustawić 

elseif ((msgcontains(msg, 'tak') or msgcontains(msg, 'Tak')) and talkState[cid] == 2) then

tylko

elseif ((msgcontains(msg, 'yes') or msgcontains(msg, 'yes)) and talkState[cid] == 2) then

lecz po paru dalszych zmianach zostało przy pierwotnej postaci :p

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...