Jump to content

martysama0134

Honorable Member
  • Posts

    613
  • Joined

  • Last visited

  • Days Won

    96
  • Feedback

    100%

Everything posted by martysama0134

  1. Inya is wrong.Select only the meshes of the models except for the bones and press the "export only the selected" button.
  2. Why don't you try to make a quest instead of that for such chest? If that is not your real request, it should be an if statement that checks the space before opening a chest and dropping the items on the ground.
  3. Are you drunk? I made infinite maps using this tool and never got problems. (and many other people too)If you can't even use such easy program, I have bad news for you. It's normal that you need to put the files in D: (I illustrated few ways to do so) AND is also normal that if you create a new model you should verify whether the texture path is correct or not.
  4. log.loginlog2 table structure is wrong. Change it like this: type varchar(20) is_gm varchar(1) login_time datetime channel int account_id int pid int ip varchar(15) client_version varchar(11)
  5. This happens if db has a mysqlclient library w/o extra charsets linked. Add inside db/conf.txt: LOCALE = latin1This also happens if you install mysql via pkg and not via ports.
  6. I didn't understand. bool CPythonPlayer::__CheckShortMana(TSkillInstance& rkSkillInst, CPythonSkill::TSkillData& rkSkillData) { extern const DWORD c_iSkillIndex_Summon; if (c_iSkillIndex_Summon == rkSkillInst.dwIndex) return false; int iNeedSP = rkSkillData.GetNeedSP(rkSkillInst.fcurEfficientPercentage); int icurSP = GetStatus(POINT_SP); // NOTE : ToggleSkill ÀÌ ¾Æ´Ñµ¥ ¼Ò¸ð SP °¡ 0 ÀÌ´Ù. if (!rkSkillData.IsToggleSkill()) { if (iNeedSP == 0) { CPythonChat::Instance().AppendChat(CHAT_TYPE_INFO, "!!! Find strange game data. Please reinstall metin2."); return true; } } if (rkSkillData.CanUseIfNotEnough()) { if (icurSP <= 0) return true; } else { if (-1 != iNeedSP) if (iNeedSP > icurSP) return true; } return false; } It's self-explanatory.
  7. Otherwise: # pkg search gcc49 gcc49-4.9.2.s20140917 # pkg install gcc49-4.9.2.s20140917
  8. [Hidden Content] [Hidden Content] 10/10 gotta help
  9. You posted the game.core, but to analyze it well we also need the relative game binary that caused such crash (no updated/recompilated ones), otherwise the result will be a mess.The syslog indicates in which line the execution stopped. It could be helpful if you add 'em too. (you just included game.core and syserr) For blend.txt, look also at this.
  10. 1) Post the syserr.txt 2) Post the syslog.txt 3) Make a "bt full" and not a simple "backtrace" and post the result 4) Check and post your blend.txt 5) I don't have any use_blend_item string inside my server files; did you add extra things in yours?
  11. You're using both "pkg" and "pkg_".You should remove "pkg_" (obsolete since freebsd 9.x), otherwise it's useless what you're trying to do.
  12. He didn't mean that ahahahOpen input_main.cpp and search for: sys_log(0, "WHISPER: %s -> %s : %s", ch->GetName(), pinfo->szNameTo, buf);There's an if (locale_IsSomething()) in there, so just remove it and the whisper will be logged.This was a trick used in old revs. In the r404 one, even the normal and guild ones were logged and there was no check to remove.
  13. Ymir enabled an anti-starvation system: signal_timer_enable(30); signal(SIGVTALRM, checkpointing);They set a SIGVTALRM signal that calls (via kernel) the checkpointing function every 30 seconds of effective execution time. Considering this: int idle() { ... while (passed_pulses--) { heartbeat(thecore_heart, ++thecore_heart->pulse); // To reduce the possibility of abort() in checkpointing thecore_tick(); } CHARACTER_MANAGER::instance().Update(thecore_heart->pulse); db_clientdesc->Update(t); ... } The bug will appear if such functions will spend more than 30 seconds to be completely executed. (still talking about execution time and not real one)A quest containing a "while true begin end" will also cause such error and the game will be crashed after 30 seconds. If you still have the game.core generated by that crash and the relative game binary, I'll try to analyze it. (it should contain where the presumed "starvation" is) Otherwise, you'll be fucked up. You can even try to remove the abort() call via dif, but you could still get a freezed game if it's a real starvation.
  14. I'm not referring to str_to_number, which is overloaded. I quoted the table structure not the remaining of the code/thread: What we have here? Fields set as signed (even though the real type should be unsigned; you'll get the real unsigned/signed issue from a different field btw) Example: typedef struct SItemLimit { BYTE bType; long lValue; } TItemLimit; You also didn't set the fields as NOT NULL, so you could fetch NULL fields and get a runtime crash. Example: str_to_number(item_table->aLimits[i].bType, data[col++]);*NULL = crash Remove it by yourself if that is the problem. It's a line of code.
  15. Be aware of the signedness of the fields (not only those three I pointed out) and whether they could be NULL or not. (actually, there are few cases in which you could get bugs)
  16. You just need to disable the auto-charset detection inside the notepad++ preferences dialog:
  17. You need to recreate the table: CREATE TABLE player_deleted SELECT * FROM player LIMIT 0;To test it, just try: INSERT INTO player_deleted SELECT * FROM player;
  18. CExchange returns a "CExchange *", so you can't directly use it as an argument for boolean: int pc_is_trade0(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); lua_pushboolean(L, ch->GetExchange() != NULL); return 1; } There are few other ways such as "(ch->GetExchange())" or "!!ch->GetExchange()". Simplified: int pc_is_busy0(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); lua_pushboolean(L, (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen())); return 1; }
  19. A monster can have 12 sentences (first 3 for wait, other 3 for attack, chase 3, attacked 3), and infinite for NPCs. enum EMonsterChatState { MONSTER_CHAT_WAIT, MONSTER_CHAT_ATTACK, MONSTER_CHAT_CHASE, MONSTER_CHAT_ATTACKED, }; void CHARACTER::MonsterChat(BYTE bMonsterChatType) { if (IsPC()) return; char sbuf[256+1]; if (IsMonster()) { if (number(0, 60)) return; snprintf(sbuf, sizeof(sbuf), "(locale.monster_chat[%i] and locale.monster_chat[%i][%d] or '')", GetRaceNum(), GetRaceNum(), bMonsterChatType*3 + number(1, 3)); } else { if (bMonsterChatType != MONSTER_CHAT_WAIT) return; if (IsGuardNPC()) { if (number(0, 6)) return; } else { if (number(0, 30)) return; } snprintf(sbuf, sizeof(sbuf), "(locale.monster_chat[%i] and locale.monster_chat[%i][number(1, table.getn(locale.monster_chat[%i]))] or '')", GetRaceNum(), GetRaceNum(), GetRaceNum()); } std::string text = quest::ScriptToString(sbuf); if (text.empty()) return; struct packet_chat pack_chat; pack_chat.header = HEADER_GC_CHAT; pack_chat.size = sizeof(struct packet_chat) + text.size() + 1; pack_chat.type = CHAT_TYPE_TALKING; pack_chat.id = GetVID(); pack_chat.bEmpire = 0; TEMP_BUFFER buf; buf.write(&pack_chat, sizeof(struct packet_chat)); buf.write(text.c_str(), text.size() + 1); PacketAround(buf.read_peek(), buf.size()); }
×
×
  • 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.