Advertisement
Kapa3a

Fix crash reload q

Nov 23rd, 2023
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.43 KB | Source Code | 0 0
  1. src/game
  2. Intrati in questmanager.h si cautati:
  3. PC * GetPCForce(unsigned int pc);
  4.  
  5. Adaugati sub:
  6. void      StopAllRunningQuests();
  7.  
  8. Intrati in questmanager.cpp si cautati:
  9. void CQuestManager::DisconnectPC(LPCHARACTER ch)
  10.    {
  11.       m_mapPC.erase(ch->GetPlayerID());
  12.    }
  13.  
  14. Adaugati sub:
  15. void CQuestManager::StopAllRunningQuests()
  16.    {
  17.       for (PCMap::iterator it = m_mapPC.begin(); it != m_mapPC.end(); it++)
  18.       {
  19.          it->second.CancelRunning();
  20.          LPCHARACTER pkChr = CHARACTER_MANAGER::instance().FindByPID(it->first);
  21.          if (!pkChr || !(pkChr->GetDesc()))
  22.             continue;
  23.          struct ::packet_script packet_script;
  24.  
  25.          packet_script.header = HEADER_GC_SCRIPT;
  26.          packet_script.skin = QUEST_SKIN_NOWINDOW;
  27.          string data = "[DESTROY_ALL]";
  28.          packet_script.src_size = data.size();
  29.          packet_script.size = packet_script.src_size + sizeof(struct packet_script);
  30.  
  31.          TEMP_BUFFER buf;
  32.          buf.write(&packet_script, sizeof(struct packet_script));
  33.          buf.write(&data[0], data.size());
  34.  
  35.          pkChr->GetDesc()->Packet(buf.read_peek(), buf.size());
  36.       }
  37.    }
  38.  
  39. In acelasi fisier cautati:
  40. void CQuestManager::Reload()
  41.    {
  42.  
  43. Adaugati sub:
  44. StopAllRunningQuests();
  45.  
  46.  
  47. binary
  48. Intrati in PythonNetworkStream.h si cautati:
  49. void OnScriptEventStart(int iSkin, int iIndex);
  50.  
  51. Adaugati sub:
  52. void HideQuestWindows();
  53.  
  54. Intrati in PythonNetworkStream.cpp si la sfarsitul fisierului adaugati:
  55. COD: SELECTATI TOT
  56. void CPythonNetworkStream::HideQuestWindows()
  57. {
  58.    PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "HideAllQuestWindow", Py_BuildValue("()"));
  59. }
  60.  
  61. Intrati in PythonNetworkStreamPhaseGame.cpp si la bool CPythonNetworkStream::RecvScriptPacket(), dupa str[str.size()-1] = '\0';
  62. Adaugati:
  63. if (str.compare(0, 13, "[DESTROY_ALL]") == 0)
  64.    {
  65.       CPythonNetworkStream::Instance().HideQuestWindows();
  66.       return true;
  67.    }
  68.  
  69.  
  70. root files(client)
  71. Intrati in interfacemodule.py si inainte de:
  72. COD: SELECTATI TOT
  73. def RemoveQuestDialog(self, key):
  74.  
  75. Adaugati:
  76. def HideAllQuestWindow(self):
  77.       tempList = []
  78.       for i,v in self.wndQuestWindow.iteritems():
  79.          tempList.append(v)
  80.  
  81.       for i in tempList:
  82.          i.OnCancel()
  83.  
  84. Intrati in game.py si sub:
  85. def OpenQuestWindow(self, skin, idx):
  86.       self.interface.OpenQuestWindow(skin, idx)
  87.  
  88. Adaugati:
  89. def HideAllQuestWindow(self):
  90.       self.interface.HideAllQuestWindow()
  91.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement