Jump to content

Tasho

Banned
  • Posts

    358
  • Joined

  • Last visited

  • Days Won

    11
  • Feedback

    0%

Everything posted by Tasho

  1. This is from quests, it sounds like you have a spurious end somewhere on quests. without seeing the content of those scripts, nobody can help you. Check the latest quests installed on the server, but i recommend to reinstall all quests after you checked it. You did changes on objects quests and you add something wrong. cd /usr/home/game/share/locale/germany/quest && sh make.sh
  2. Don't take pride in how well you code. Take pride in how well you learn. Then learning that your code needs improvement provides you with an opportunity to demonstrate how good you are at learning, instead of coming across as criticism of how bad a "programmer" you are. The truth is that probably in 1/2 years when you will see your current code you will agree that it was a mess. Learning programming is a never ending process and there will always be someone who is better at it than you. So if person who said that your code is a mess is not just mean and it is not another case of "I would do it better" disease common among programmers you should ask him/her what exactly is wrong with your code and how can you improve it. The trick is to learn to accept it. Learn to accept that you could do better. Learn to live with the flaws. Learn to accept that you're not going to get it perfect this time, and probably the next time too, and that it's a deliberate choice because the alternative is not delivering. And that's worse. Disclaimer: none of this should be read as "bad code is OK". I hope you get these points (you can search on google more then this) and learn, don't try to look a smart because you do not impress anyone, we just want to help you, i not want to make too much off-topic, is enough i think.
  3. Thanks for release, but code is low level and there is nothing like official. And really...systems like "official" with saved variables to constInfo on 2017.. But if is work good, is ok, but i never will use "systems" with code like this.
  4. if you didn't find a link, the logical answer is the second one.
  5. Try that. local x, y, targetGuild = pc.get_x() * 100, pc.get_y() * 100, pc.get_guild() if is_blocked == 1 then syschat("Player: "..sname.." blocked tp.") elseif pc.get_guild() == 0 then syschat("You have to be in a guild.") elseif targetGuild == 0 then syschat("Player: "..sname.." is not in a guild.") elseif targetGuild ~= pc.get_guild() then syschat("Player: "..sname.." is not member of same guild as you.") else [......................] end
  6. # Update Select Character ## Added Ghost Flag effect for the slots that were not created. ## Fixed some bugs. Video:
  7. Hey there, so I got very good responds due to my last video, so I made the full package Login + Select + Empire + Create. Hope you like it and for more information contact me at skype: geo.geani94 . Special thanks to: @VegaS @All of you for the feedback from the other topic.
  8. Try that. // Change the hook function with this: void MoveHook::hook(CInputMain* self, iCHARACTER* ch, const char* data) { if (!ch || !self || !*data) return; if (ch->m_counterxxx == 100) ch->m_counterxxx = 0; ch->m_counterxxx++; instance()->detour->GetOriginalFunction()(self, ch, data); } // Search for: void CHARACTER::Destroy() and add inside: m_counterxxx = 0; // Search for: void CHARACTER::Disconnect(const char * c_pszReason) and add inside: m_counterxxx = 0; The crash is generated when he destroyed the desc, you should check your class destroy and stop if something is nullptr and try to reinitializate the variables store to default. Without full code i can't say too much about that, but i hope you get my points.
  9. yah ... im not a good designer soo I can't make cool backgrounds. xD
  10. yah, first a need to find a good place to make the position for the backgraund... now I dont really like the contrast.
  11. Hi there comunity, today I was a little bored and an idea came to mind, what if I made a replica of the interface from League of Legends for Metin2. So this is the result: I just want to know what do you think and if you think that I need to continue with it.
  12. bool MessengerManager::IsBlocked(MessengerManager::keyA account, MessengerManager::keyA companion) { return (m_BlockRelation[account].find(companion) != m_BlockRelation[account].end() || m_BlockRelation[companion].find(account) != m_BlockRelation[companion].end()); } There are more things like this what you can do, also there not need a "else" you can do it like this too: if (something) return true; return false;
  13. I think you don't know to read c++ code, the contribution doesn't was the "removed some parentheses" was this: LPDUNGEON dung=it->second.pCharacter->GetDungeon(); dung->ExitAllToStartPosition(); To this: it->second.pCharacter->GetDungeon()->ExitAllToStartPosition(); There we speak about good practice code, if you don't understand, not speak. EDIT: Why you need to do a spam for this? You just make +1 without do something, just speak about me and have child behavior, i do shortened the code and show you the good practices. Show us your skills if you are better then, at the moment you just speak without sense, people what say "i'm better then you", they are more low.
  14. void CParty::UpdateOfflineState(DWORD dwPID) { TPacketGCPartyAdd p; p.header = HEADER_GC_PARTY_ADD; p.pid = dwPID; memset(p.name, 0, CHARACTER_NAME_MAX_LEN + 1); for (TMemberMap::iterator it = m_memberMap.begin(); it != m_memberMap.end(); ++it) { if (it->second.pCharacter && it->second.pCharacter->GetDesc()) { if (it->second.pCharacter->GetDungeon()) it->second.pCharacter->GetDungeon()->ExitAllToStartPosition(); else it->second.pCharacter->GetDesc()->Packet(&p, sizeof(p)); } } }
  15. This is already public since 5 years ago. quest teleport_player begin state start begin when login begin cmdchat("teleport_player "..q.getcurrentquestindex()) end when button or info begin local sname = getinput("getinput") if sname == "" then return end local u_vid = find_pc_by_name(sname) local m_vid = pc.get_vid() if u_vid == 0 then return end local m_name = pc.name local old = pc.select(u_vid) local x,y = pc.get_x()*100,pc.get_y()*100 pc.select(old) if u_vid == m_vid then return end local ok_sign = confirm(u_vid, string.format("Player "..m_name.." want to teleport on you, accepted?", pc.name), 30) if ok_sign == CONFIRM_OK then pc.warp(x, y) end end end end You just duplicate function do_warp and add call from quest..and called "new system". PS: You should stop to rename all functions with your name because that is a child act, to show the people like "i do that" but reality is just duplicate something what ymir already did 10+ years ago. But thanks for release anyway.
  16. when 20092.chat."Test" with pc.count_item(50602) begin You can.
  17. if pc.count_item(50602) then -- Check if exist a item in inventory (MIN 1) if pc.count_item(50602) >= value then -- Check if exist a item in inventory (MIN 1 | MAX: value)
  18. I am single who hears 2 songs in one video? Thanks for release.
  19. I speaking about python not lua oh my god and what error say. 0617 03:07:26595 :: IndexError 0617 03:07:26595 :: : 0617 03:07:26595 :: list index out of range 0617 03:07:26595 :: Already i give him a option to check it list by catID if exist, you give him "has_key" what is totally wrong. if int(catId) in self.items: I was speaking about your "has_key" on list python, how you can explain that if you say "you not was blind". You should learn bit python (because as i see you didn't know syntax of lua and python), maybe that say you something. if self.items.has_key(int(catId)): python 'list' object has no attribute 'has_key' I'm not trying to offense you, but as i say there was a list not a dictionary, because if was dictionary was get KeyError not list index out of range, or maybe i'm wrong? @NeXoN That should solved your problem. def SelectCategory(self, catId): categoryID = int(catId) if self.selectedCategory == categoryID or categoryID not in self.items: return self.selectedCategory = categoryID self.categoryList.SetButtonDown(categoryID) self.itemList.ClearItems() for item in self.items[categoryID]: self.itemList.InsertItem(item[0], item[1], item[2], item[3], item[4], item[5], item[6]) PS: @Shang itemsList = [] print (itemsList[999]) #Traceback (most recent call last): #File "python", line 2, in <module> #IndexError: list index out of range itemsDict = {} print (itemsDict[999]) #Traceback (most recent call last): #File "python", line 2, in <module> #KeyError: 999 PS: Now i hope you understand what is list and what is dictionary, have a nice day.
  20. Why not? ch->SetQuestFlag("exp_block", type); ch->ChatPacket(CHAT_TYPE_INFO, "<ExpBlockSystem> [%d] You %s your experience.", ch->GetQuestFlag("exp_block"), (type == 0 ? "lock" : "unlock"));
  21. Array Is a list theoretical , not a dictionary , 'list' no have attribute 'has_key', so that doesn't work. The check of list value should look like that, a simple version: if int(catId) in self.items: # do something
  22. Hmm then try to change that: #cmd_General.cpp #Change: if (iRequestIndexMap < 1) #With: if (iRequestIndexMap <= 0) #Search: if (iRequestIndexMap > NUMBER_MAX_MAPS) #Add before: iRequestIndexMap -= 1; And replace the tables from .h with this: int szTeleportConfig[NUMBER_MAX_MAPS][4] = { { 473900, 954600, 1, 105 }, // metin2_map_a1 (idxMapIndex: 1) { 352300, 882700, 1, 105 }, // metin2_map_a3 (idxMapIndex: 3) { 63200, 166700, 1, 105 }, // metin2_map_b1 (idxMapIndex: 21) { 145700, 239800, 1, 105 }, // metin2_map_b3 (idxMapIndex: 23) { 959600, 269700, 1, 105 }, // metin2_map_c1 (idxMapIndex: 41) { 863800, 246000, 1, 105 }, // metin2_map_c3 (idxMapIndex: 43) { 436300, 215700, 10, 105 }, // map_n_snowm_01 (idxMapIndex: 61) { 270400, 739900, 15, 105 }, // map_n_threeway (idxMapIndex: 64) { 600900, 687500, 20, 105 }, // metin2_map_n_flame_01 (idxMapIndex: 62) { 217800, 627200, 25, 75 }, // metin2_map_n_desert_01 (idxMapIndex: 63) { 60000, 496600, 30, 85 }, // metin2_map_spiderdungeon (idxMapIndex: 10) { 553600, 144900, 35, 95 }, // metin2_map_milgyo (idxMapIndex: 65) { 284200, 809600, 45, 105 } // metin2_map_skipia_dungeon_01 (idxMapIndex: 72) }; char* szTableNameMaps[NUMBER_MAX_MAPS] = { "<1> Map1 Shinshoo (Lv. min.%d) | | (Lv. max.%d)", "<2> Map2 Shinshoo (Lv. min.%d) | | (Lv. max.%d)", "<3> Map1 Chunjo (Lv. min.%d) | | (Lv. max.%d)", "<4> Map2 Chunjo (Lv. min.%d) | | (Lv. max.%d)", "<5> Map1 Jinno (Lv. min.%d) | | (Lv. max.%d)", "<6> Map2 Jinno (Lv. min.%d) | | (Lv. max.%d)", "<7> Mount Sohan (Lv. min.%d) | | (Lv. max.%d)", "<8> Valley of Seungryong (Lv. min.%d) | | (Lv. max.%d)", "<9> Doyyumhwaji (Lv. min.%d) | | (Lv. max.%d)", "<10> Yongbi Desert (Lv. min.%d) | | (Lv. max.%d)", "<11> Spiders Dungeon 1 (Lv. min.%d) | | (Lv. max.%d)", "<12> Hwang Temple (Lv. min.%d) | | (Lv. max.%d)", "<13> Skipia Dungeon 1 (Lv. min.%d) | | (Lv. max.%d)" };
  23. Replace with: { 0, 0, 0, 0},
×
×
  • 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.