Jump to content

kbz

Members
  • Posts

    91
  • Joined

  • Last visited

  • Donations

    0.00 GBP 

Posts posted by kbz

  1. (...) they must also have the possibility to add / activate the last spell slot by an SD2 event (probably instance data set to DONE).

    i think on retail they change the entry of the vehicle to match the new one (Creature::UpdateEntry(uint32 entry)) however i cant really confirm this (unless its all about setting some variable or just a vehicle script to update the entry when X condition is met

  2. wrong, this is a bug related to updating player's scale on dismounting ,the client still thinks youre mounted when you're not (thus it thinks your as big as if you were mounted) so you cant pass through doorways...

  3. i read your commit and came up with a question...

    what does

    progress->counter

    mean or do?

    with current code im not so sure bout real functionality with timed achievements which require to do X things in Y time

    this part:

           CriteriaProgress* progress = NULL;
    
           CriteriaProgressMap::iterator iter = m_criteriaProgress.find(achievementCriteria->ID);
           if (iter == m_criteriaProgress.end())
               progress = &m_criteriaProgress[achievementCriteria->ID];
           else
               progress = &iter->second;
    
           progress->changed = true;
           progress->counter = 0;
    
           // Start with given startTime or now
           progress->date = startTime ? startTime : time(NULL);
           progress->timedCriteriaFailed = false;
    
           // Add to timer map
           m_criteriaFailTimes[achievementCriteria->ID] = time_t(progress->date + achievementCriteria->timeLimit);
    
           SendCriteriaUpdate(achievementCriteria->ID, progress);
    

    why do we upate progress->date on every call? say we have to do X thing Y times then b4 sending to client you're telling the client: "achievement just started" on every call and counter is always 0 (idk if counter refers to achievement progress like a bar which counts how many X things have you achieved in Y time)

           CriteriaProgress* progress = NULL;
    
           CriteriaProgressMap::iterator iter = m_criteriaProgress.find(achievementCriteria->ID);
           if (iter == m_criteriaProgress.end())
           {
               progress = &m_criteriaProgress[achievementCriteria->ID];
               progress->changed = true;
               progress->counter = 0;
    
               // Start with given startTime or now
               progress->date = startTime ? startTime : time(NULL);
               progress->timedCriteriaFailed = false;
    
               // Add to timer map
               m_criteriaFailTimes[achievementCriteria->ID] = time_t(progress->date + achievementCriteria->timeLimit);
           }
           else
               progress = &iter->second;
    
           SendCriteriaUpdate(achievementCriteria->ID, progress);
    

    thats my idea, correct me if im mistaken or something if i missed anything

  4. hmm.. afaik, timed achievements are not hmm "mercyfull" meaning: it wont refresh the timer if the achieve already started

    say you get 49 Whelps for leeroy and the 50th is out of the 15 second frame = fail

    say you get another one (51th) this one is in the time window if we consider the second Whelp as starter (thats the idea) sadly second case will count as fail as well (since timed achievements start on first call(event/creature/quest)

  5. is there a possibility to hook timed achievements in ScriptedInstance class?

    im looking towards implementing achievements like... this but i find a limitation as i cannot access Achievement manager to start the timer... (i know its simple to add a timer and make it run, but whats the point if either way you cannot update the achievement progress)

    the idea is make a call to ScriptedInstance::OnCreatureEnterCombat (this is only for this kind of achievements - not sure if there's a generic way to make this work) (if creature->entry == XXX) then start timed achievement for all players in the map (?), i'd be thankful of any ideas which could guide me towards the correct solution.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use