Jump to content

Vassy

Inactive Member
  • Posts

    46
  • Joined

  • Last visited

  • Feedback

    0%

Everything posted by Vassy

  1. Hi guys. Some times the client closes and I get in syserr "unknown packet header". What header file should be the same server/client? Thanks.
  2. Hi. I want on my server the stones to be upgradeble. Like an armour. I did this. I added the necesary items in refine proto, worked in item_proto at refine vnum and refine set. What i want to do is to be able o upgrade the stones with Blessing Scroll. How i can do that? Note that i want to make the stones + at the normal blacksmith. (<500 refine proto id). (already did it) Thanks.
  3. All the files are there. Also, all the necesary files are included in includes / lib.
  4. Hi. Is there any chance to use the GameGuard on my server? I saw that the files are includes in the binary, I tryed to define "USE_NPROTECT_GAMEGUARD" in locale but i got this errors. Thanks.
  5. Aparently 5000 is the count of item. case 1: str_to_number(d[i].iLvStart, szTemp); break; case 2: str_to_number(d[i].iLvEnd, szTemp); break; case 3: d[i].fPercent = atof(szTemp); break; case 4: strlcpy(d[i].szItemName, szTemp, sizeof(d[i].szItemName)); break; case 5: str_to_number(d[i].iCount, szTemp); break; This is from server funcion ITEM_MANAGER::ReadCommonDropItemFile. bool ITEM_MANAGER::ReadCommonDropItemFile(const char * c_pszFileName) { FILE * fp = fopen(c_pszFileName, "r"); if (!fp) { sys_err("Cannot open %s", c_pszFileName); return false; } char buf[1024]; int lines = 0; while (fgets(buf, 1024, fp)) { ++lines; if (!*buf || *buf == '\n') continue; TDropItem d[MOB_RANK_MAX_NUM]; char szTemp[64]; memset(&d, 0, sizeof(d)); char * p = buf; char * p2; for (int i = 0; i <= MOB_RANK_S_KNIGHT; ++i) { for (int j = 0; j < 6; ++j) { p2 = strchr(p, '\t'); if (!p2) break; strlcpy(szTemp, p, MIN(sizeof(szTemp), (p2 - p) + 1)); p = p2 + 1; switch (j) { case 0: break; case 1: str_to_number(d[i].iLvStart, szTemp); break; case 2: str_to_number(d[i].iLvEnd, szTemp); break; case 3: d[i].fPercent = atof(szTemp); break; case 4: strlcpy(d[i].szItemName, szTemp, sizeof(d[i].szItemName)); break; case 5: str_to_number(d[i].iCount, szTemp); break; } } DWORD dwPct = (DWORD) (d[i].fPercent * 10000.0f); DWORD dwItemVnum = 0; if (!ITEM_MANAGER::instance().GetVnumByOriginalName(d[i].szItemName, dwItemVnum)) { // 이름으로 못찾으면 번호로 검색 str_to_number(dwItemVnum, d[i].szItemName); if (!ITEM_MANAGER::instance().GetTable(dwItemVnum)) { sys_err("No such an item (name: %s)", d[i].szItemName); fclose(fp); return false; } } if (d[i].iLvStart == 0) continue; g_vec_pkCommonDropItem[i].push_back(CItemDropInfo(d[i].iLvStart, d[i].iLvEnd, dwPct, dwItemVnum)); } } fclose(fp); for (int i = 0; i < MOB_RANK_MAX_NUM; ++i) { std::vector<CItemDropInfo> & v = g_vec_pkCommonDropItem[i]; std::sort(v.begin(), v.end()); std::vector<CItemDropInfo>::iterator it = v.begin(); sys_log(1, "CommonItemDrop rank %d", i); while (it != v.end()) { const CItemDropInfo & c = *(it++); sys_log(1, "CommonItemDrop %d %d %d %u", c.m_iLevelStart, c.m_iLevelEnd, c.m_iPercent, c.m_dwVnum); } } return true; } Note that d.iCount is not used anywhere in the funcion or any game file (searched with Find in Files function), so ymir maybe changed his mind about that part of common_drop_item. About the drop chance, i found this on the same funcion: DWORD dwPct = (DWORD) (d[i].fPercent * 10000.0f); *Sorry for my english.
  6. Aparently 100000 is the count of item. case 1: str_to_number(d[i].iLvStart, szTemp); break; case 2: str_to_number(d[i].iLvEnd, szTemp); break; case 3: d[i].fPercent = atof(szTemp); break; case 4: strlcpy(d[i].szItemName, szTemp, sizeof(d[i].szItemName)); break; case 5: str_to_number(d[i].iCount, szTemp); break; This is from server funcion ITEM_MANAGER::ReadCommonDropItemFile. bool ITEM_MANAGER::ReadCommonDropItemFile(const char * c_pszFileName) { FILE * fp = fopen(c_pszFileName, "r"); if (!fp) { sys_err("Cannot open %s", c_pszFileName); return false; } char buf[1024]; int lines = 0; while (fgets(buf, 1024, fp)) { ++lines; if (!*buf || *buf == '\n') continue; TDropItem d[MOB_RANK_MAX_NUM]; char szTemp[64]; memset(&d, 0, sizeof(d)); char * p = buf; char * p2; for (int i = 0; i <= MOB_RANK_S_KNIGHT; ++i) { for (int j = 0; j < 6; ++j) { p2 = strchr(p, '\t'); if (!p2) break; strlcpy(szTemp, p, MIN(sizeof(szTemp), (p2 - p) + 1)); p = p2 + 1; switch (j) { case 0: break; case 1: str_to_number(d[i].iLvStart, szTemp); break; case 2: str_to_number(d[i].iLvEnd, szTemp); break; case 3: d[i].fPercent = atof(szTemp); break; case 4: strlcpy(d[i].szItemName, szTemp, sizeof(d[i].szItemName)); break; case 5: str_to_number(d[i].iCount, szTemp); break; } } DWORD dwPct = (DWORD) (d[i].fPercent * 10000.0f); DWORD dwItemVnum = 0; if (!ITEM_MANAGER::instance().GetVnumByOriginalName(d[i].szItemName, dwItemVnum)) { // 이름으로 못찾으면 번호로 검색 str_to_number(dwItemVnum, d[i].szItemName); if (!ITEM_MANAGER::instance().GetTable(dwItemVnum)) { sys_err("No such an item (name: %s)", d[i].szItemName); fclose(fp); return false; } } if (d[i].iLvStart == 0) continue; g_vec_pkCommonDropItem[i].push_back(CItemDropInfo(d[i].iLvStart, d[i].iLvEnd, dwPct, dwItemVnum)); } } fclose(fp); for (int i = 0; i < MOB_RANK_MAX_NUM; ++i) { std::vector<CItemDropInfo> & v = g_vec_pkCommonDropItem[i]; std::sort(v.begin(), v.end()); std::vector<CItemDropInfo>::iterator it = v.begin(); sys_log(1, "CommonItemDrop rank %d", i); while (it != v.end()) { const CItemDropInfo & c = *(it++); sys_log(1, "CommonItemDrop %d %d %d %u", c.m_iLevelStart, c.m_iLevelEnd, c.m_iPercent, c.m_dwVnum); } } return true; } Note that d.iCount is not used anywhere in the funcion or any game file (searched with Find in Files function), so ymir maybe changed his mind about that part of common_drop_item. About the drop chance, i found this on the same funcion: DWORD dwPct = (DWORD) (d[i].fPercent * 10000.0f); *Sorry for my english.
  7. Hi guys. Can you help me to understand common_drop_item table? PAWN S_PAWN KNIGHT S_KNIGHT 초급검 1 15 1.08 도+1 5000 초급검 1 15 1.104 도+1 3846 초급검 1 15 1.12 도+1 3333 초급검 1 15 1.32 도+1 1250 I understand from here that this is actually one line 초급검 1 15 1.08 도+1 5000 But what every value means? 1.08 is probably the chance and 도+1 is the object. But from here im stuck. Thanks. EDIT: Found on Mr. Google that 1 and 15 is the level where you can get the item. Remain only one value. What 5000 means?
  8. Hi guys. I want to run a very simple mysql funcion to SELECT a INT value from a table. I want to use the function in char_horse.cpp. How i can do that? Thanks.
  9. Hi guys. I want the horse to have a different model 3D by some condition like if (beta_tester == 1) { show_skinned_horse; } else { show_normal_horse; } I want the skinned horse to act exactly like normal horse, to be leveled up and so on. Someone have any idee how to do this? I use source, ofc. Thanks.
  10. Solved. You need to include the files from granny2.9/includes if you are using granny 2.9. Not just the files from lib/win32.
  11. Hi guys. I try to compile a Binary but i get this error: Visual Studio 2008 SP1. Includes and Libs from Novaline. Granny libs included from Novaline. Worldeditor Includes and Libs included from Novaline. I tryed to use different includes and libs but without effect. If someone can help me via skype would be great. Thank you very much.
  12. Guys. Why is this only for 34k? The same python funcions are avaiable on 2089 too. Thanks.
  13. I think WEBLK will be perfect for you. I fyou want to make an E-Mail activation system.
  14. You can go in locale_xx/locale_game.txt and search for eatch code. Like LOGIN_FAILURE_WEB_BLOCK I was interested in WEBLK, so the accounts which are not activated to have the mesage. "Your acccount is not activated. Check your E-Mail".
  15. Hi. What statuses an account can have? Except BLOCK and OK. Thanks.
  16. Hi guys. I want to make 2 things. 1. I want to make a in-game item-shop copy. I want to keep the old in-game item-shop and to make a copy of it which will open another link. 2. How i can delete the 3% tax when i sell a item at shop? I use 2011 daroo files. Not any C++ things, etc. Thanks and sorry for my bad english. EDIT: I found that Trent2 looks really bizzard. What can be the problem? That happen only when is day (/x 0) .
  17. Hi guys and (almost) Happy new year. I'm here asking for a server which can run on my Windows computer (Hamachi or DHCP) and a client compatible with the server which can support Granny2.6 or 2.9. What i want to do is to replace (or add) some structures from Zone with another ones. I dont know if exists what i ask for but if dont exist please tell me all the steps to do for adding this new Structures in the client which are in Granny 2.6 or 2.9. I saw some posts where someone ported the client from Granny 2.4 to Granny 2.9 but I dont understand exactly what are with all this "binnary" files. Thank you soo much. Have a nice night and sorry for my bad english
×
×
  • 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.