Jump to content

Ikarus_

Developer
  • Posts

    402
  • Joined

  • Last visited

  • Days Won

    20
  • Feedback

    0%

Everything posted by Ikarus_

  1. ## ABSORPTION RATE self.AppendTextLine(localeInfo.SASH_ABSORB_CHANCE % (metinSlot[sash.ABSORPTION_SOCKET]), self.CONDITION_COLOR) ## END ABSOPRTION RATE #REPLACE WITH: ## ABSORPTION RATE if itemVnumSash == MY_VNUM_SASH_WITH_100PERC_ABSORD: self.AppendTextLine(localeInfo.SASH_ABSORB_CHANCE % (100), self.CONDITION_COLOR) else: self.AppendTextLine(localeInfo.SASH_ABSORB_CHANCE % (metinSlot[sash.ABSORPTION_SOCKET]), self.CONDITION_COLOR) ## END ABSOPRTION RATE pastebin version : [Hidden Content]
  2. const DWORD c_Inventory_Page_Size = 45 Do you have #ifdef in the c++ that may result in this constant not being compiled?
  3. search in PythonPlayerModule "INVENTORY_PAGE_SIZE" I think it should be a PyIntConstant
  4. Post (if possible on pastebin) uiMessenger.py
  5. I think that you've wrongly sent the file, and that it's invorywindow not dragonsoulwindow
  6. attachedItemVnum is the costume change bonuses is not costume .
  7. try to this : #replace at line 19 (dragonsoulwindow.py) "style" : ("attach",), with : "style" : ("attach","not_pick",), Bye Bye
  8. post this func : bool CInstanceBase::SetAcce(DWORD eAcce)
  9. First of all you should create the data structure you need, which Lua does automatically but the c++ no. struct MyStructData { int MyInt; BYTE MyByte; bool MyBool; char szName[24]; } Then you have to decide how you want to use this data. You can use them in a list (optimized if you have to remove and put members very often) You can use them in a vector (optimized for random access) You can use them in a map (optimized with key search -> value) example of list : struct MyStructData { int MyInt; BYTE MyByte; bool MyBool; char szName[24]; } std::list<MyStructData> MyList; //I declare a list and set it a type of data (in this case mystructdata) //i declare a new MyStructData and set it value MyStructData Example; Example.MyInt = 0; Example.MyByte = 0xFF; Example.MyBool = false; strncpy( Example.szName , "My string is this." , sizeof(Example.szName) ); //add my new data in list MyList.push_back( Example ); //remove last member inserted MyList.pop_back(); example of vector (same of list) struct MyStructData { int MyInt; BYTE MyByte; bool MyBool; char szName[24]; } std::list<MyStructData> MyVector; //I declare a vector and set it a type of data (in this case mystructdata) //i declare a new MyStructData and set it value MyStructData Example; Example.MyInt = 0; Example.MyByte = 0xFF; Example.MyBool = false; strncpy( Example.szName , "My string is this." , sizeof(Example.szName) ); //add my new data in vector MyVector.push_back( Example ); //remove last member inserted in vector MyVector.pop_back(); The different between list and vector is : List is efficient to add and remove member in list , is not efficient for access to members of the list . Vector is efficient to do the random access ( [5] , [100] , [150] ) Example of map: struct MyStructData { int MyInt; BYTE MyByte; bool MyBool; char szName[24]; } std::map<BYTE , MyStructData> MyMap; //I declare a map and set it a type of data and a type of key (in this case mystructdata and Byte) //i declare a new MyStructData and set it value MyStructData Example; Example.MyInt = 0; Example.MyByte = 0xFF; Example.MyBool = false; strncpy( Example.szName , "My string is this." , sizeof(Example.szName) ); //insert new member in map BYTE key = 0xFA; MyMap.insert( std::make_pair( key , Example ) ); // insert key 0xFA (aka 250 in decimal) with value Example //access to member MyMap[250].MyInt = 100; MyMap[250].MyBool = true; //access in member by key with iterator std::map<BYTE , MyStructData>::iterator it = MyMap.find(250); it->second.MyInt = 100; it->second.MyBool = true; //access to all member of map std::map<BYTE , MyStructData>::iterator another_it = MyMap.begin(); for( ; another_it != MyMap.end() ; another_it++) { if(another_it->second.MyInt != 100) { another_it->second.MyBool = false; } } There are many possibilities, you have to find the most useful one for your needs. You can understand more about it by enjoying STL Conteiner Bye Bye
  10. I know I can do that, but I don't have the time or even the desire, I'm sincere asd.
  11. Can you post quest? or at least sends the part that interests us in full about the regen function, and whole declarations of its variables used (icedungeon.data) If you haven't understood it, the regen_in_map function doesn't work because it's badly passing the parameters, even if it may seem that it's not so, but the error that gave you the. core says that the string that passes is wrong / not at all. I want to help you but I must also have the way...
  12. post close.sh and tell me your path of : folder channel 1 core1 folder auth folder db folder game99
  13. no, it's just a different method of doing what you did with your statement with[1],[2],[3]..... replace this : ["regens"] = { [1] = "data/dungeon/icedungeon/regen_1.txt", [2] = "data/dungeon/icedungeon/regen_2.txt", [3] = "data/dungeon/icedungeon/regen_3.txt", [4] = "data/dungeon/icedungeon/regen_4.txt", [5] = "data/dungeon/icedungeon/regen_5.txt" }, with this : data["regens"] = {} table.insert(data["regens"],"data/dungeon/icedungeon/regen_1.txt") table.insert(data["regens"],"data/dungeon/icedungeon/regen_2.txt") table.insert(data["regens"],"data/dungeon/icedungeon/regen_3.txt") table.insert(data["regens"],"data/dungeon/icedungeon/regen_4.txt") table.insert(data["regens"],"data/dungeon/icedungeon/regen_5.txt")
  14. post these func : void CWindowManager::RunKeyDown(int vkey) -> PythonWindowManager.cpp void CPythonApplication::OnKeyDown (int iIndex) -> PythonApplicationEvent.cpp BOOL CWindow::OnKeyDown(int ikey) -> PythonWindow.cpp
  15. Decomment lines 376 and 395 def __BindEvent(self): for i in xrange(len(self.skillGroupButton)): self.skillGroupButton[i].SetEvent(lambda arg=i: self.__SelectSkillGroup(arg)) #self.RefreshQuest() self.__HideJobToolTip() for (tabKey, tabButton) in self.tabButtonDict.items(): tabButton.SetEvent(ui.__mem_func__(self.__OnClickTabButton), tabKey) for (statusPlusKey, statusPlusButton) in self.statusPlusButtonDict.items(): statusPlusButton.SAFE_SetEvent(self.__OnClickStatusPlusButton, statusPlusKey) statusPlusButton.ShowToolTip = lambda arg=statusPlusKey: self.__OverInStatButton(arg) statusPlusButton.HideToolTip = lambda arg=statusPlusKey: self.__OverOutStatButton() for (statusMinusKey, statusMinusButton) in self.statusMinusButtonDict.items(): statusMinusButton.SAFE_SetEvent(self.__OnClickStatusMinusButton, statusMinusKey) statusMinusButton.ShowToolTip = lambda arg=statusMinusKey: self.__OverInStatMinusButton(arg) statusMinusButton.HideToolTip = lambda arg=statusMinusKey: self.__OverOutStatMinusButton() for titleBarValue in self.titleBarDict.itervalues(): titleBarValue.SetCloseEvent(ui.__mem_func__(self.Hide)) #self.questSlot.SetSelectItemSlotEvent(ui.__mem_func__(self.__SelectQuest)) replace with def __BindEvent(self): for i in xrange(len(self.skillGroupButton)): self.skillGroupButton[i].SetEvent(lambda arg=i: self.__SelectSkillGroup(arg)) self.RefreshQuest() self.__HideJobToolTip() for (tabKey, tabButton) in self.tabButtonDict.items(): tabButton.SetEvent(ui.__mem_func__(self.__OnClickTabButton), tabKey) for (statusPlusKey, statusPlusButton) in self.statusPlusButtonDict.items(): statusPlusButton.SAFE_SetEvent(self.__OnClickStatusPlusButton, statusPlusKey) statusPlusButton.ShowToolTip = lambda arg=statusPlusKey: self.__OverInStatButton(arg) statusPlusButton.HideToolTip = lambda arg=statusPlusKey: self.__OverOutStatButton() for (statusMinusKey, statusMinusButton) in self.statusMinusButtonDict.items(): statusMinusButton.SAFE_SetEvent(self.__OnClickStatusMinusButton, statusMinusKey) statusMinusButton.ShowToolTip = lambda arg=statusMinusKey: self.__OverInStatMinusButton(arg) statusMinusButton.HideToolTip = lambda arg=statusMinusKey: self.__OverOutStatMinusButton() for titleBarValue in self.titleBarDict.itervalues(): titleBarValue.SetCloseEvent(ui.__mem_func__(self.Hide)) self.questSlot.SetSelectItemSlotEvent(ui.__mem_func__(self.__SelectQuest))
  16. post uicharacter.py (under spoiler or through pastebin )
  17. I think I found the hitch : eAcce = eAcce + 65536; // __ClearAcceRefineEffect(); // Clear the previous effect // m_acceEffect = EFFECT_REFINED + EFFECT_ACCE_SPECIAL; // __EffectContainer_AttachEffect(m_acceEffect); m_GraphicThingInstance.AttachAcce(eAcce, 0, CRaceData::PART_ACCE); if (!eAcce) { __ClearAcceRefineEffect(); m_GraphicThingInstance.SetScale(1.0f, 1.0f, 1.0f); m_GraphicThingInstance.SetScalePosition(0.0f, 0.0f, 0.0f); m_awPart[CRaceData::PART_ACCE] = 0; } if(!eAcce) it not possible because eAcce = eAcce + 65536; -> eAcce is never 0 so.. replace this part with eAcce = eAcce + 65536; // __ClearAcceRefineEffect(); // Clear the previous effect // m_acceEffect = EFFECT_REFINED + EFFECT_ACCE_SPECIAL; // __EffectContainer_AttachEffect(m_acceEffect); m_GraphicThingInstance.AttachAcce(eAcce, 0, CRaceData::PART_ACCE); if ( eAcce == 65536) { __ClearAcceRefineEffect(); m_GraphicThingInstance.SetScale(1.0f, 1.0f, 1.0f); m_GraphicThingInstance.SetScalePosition(0.0f, 0.0f, 0.0f); m_awPart[CRaceData::PART_ACCE] = 0; }
  18. try to replace : if 28 == key: with if key == app.DIK_RETURN :
  19. i can't see that , can you use pastebin plaese?
  20. can you starts with replacing the c ++ function with mine, which is anti crash than can you replace your declaration of data["regens"] with this : data["regens"] = {} table.insert(data["regens"],"data/dungeon/icedungeon/regen_1.txt") table.insert(data["regens"],"data/dungeon/icedungeon/regen_2.txt") table.insert(data["regens"],"data/dungeon/icedungeon/regen_3.txt") table.insert(data["regens"],"data/dungeon/icedungeon/regen_4.txt") table.insert(data["regens"],"data/dungeon/icedungeon/regen_5.txt")
  21. does not complile or does not work? if it do not compile post the error. if it does not work i want to see how you set the event_flag.
  22. if after that func your game crash , you are not passing the correct parameters. regen_in_map( NUMBER , STRING)
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / 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.