BUGG!
i recieveQuest-funktionen i Player.cpp finns den här if satsen:
for (int i=0;i<maxQuests;i++){
if (questLog[i] == "" || questLog[i] != questGiver->getQuest()){
(...)
}
}
Ta ett exempel att du först får en quest från npc[0].
i =0
questLog[0] = ""
Då kommer platsen questLog[0] = npc[0]->getQuest()
När du sedan får en quest av npc[1]:
kommer questlog[0] fortfarande vara questen du fick från npc[0], och eftersom questlog[0] != den nya questgiverns quest kommer den första questen skrivas över av den andra questen.
Så här har jag skrivit istället:
| Kod: |
void Player::recieveQuest(NPC* questGiver){ int j = 0 //loopar igenom questloggen for (int i=0;i<maxQuests;i++){ //om det finns plats i plats 1 i questloggen eller questen på den platsen inte är if (questLog[i] == ""){ cout << "\n Recieving quest from " << questGiver->getName() << endl; questLog[i] = questGiver->getQuest(); break; }//if-satsen else if(questLog[i] == questGiver->getQuest()){ cout << "\n You already have this quest." << endl; break; } else{//om platsen var full, ökas j(antalet quests i questloggen) med 1 j++; }//else-satsen }//forloopen }//recievequest |