mob_drop_item.txt Structure [kill_drop & level_limit] ?
Similar Content
-
Activity
-
4
Feeding game source to LLM
You don't need to train it on your source code. You just need to take a good model and give it more context. For example I use Github Copilot to help me with some trivial task while coding. If I need info about the whole source I just use @workspace in the chat when I ask it a question and then he has more context about the source. -
0
Quest 6/7 Problem
Hi, sorry for my terrible English. I have a problem with system 6/7 of these server files. [Hidden Content] They do not bring the system quest. I don't know much about programming quests, I tried to adapt a quest from other server files, but I only managed to get it to open the bonus window. Does anyone have the quest or can do it? I would greatly appreciate the help I use '--' just for identify the quest_function I had and the quest I try to adapt [Hidden Content] -
5
Effect weapons
I have the .mde and the .mse next to each other however this does not really work.. I have the correct EFFECT_REFINED + (the number of the enum value) in the playersettingmodule.py I applied the effect on InstanceBase.cpp (considering the item's vnum) with no luck.. Do I miss something? Does those files have a prefix path or something? Like if I put them on the wrong path (think about the granny texture) will not find them at all? -
0
fix [C++] Fix Core Downer Using Negative Number in GM Codes
INTRODUCTION & PROBLEM Hello, today we will fix a few errors, especially the error that caused the core down by giving an unexpected negative (-) arg (number) in the commands (Example; /mob 101 -1), and we will also regulate the use of "ChatPacket" in this functions. WHY ? GMs are already part of the team, you may ask why we need this, you are right, but do not forget that a GM who does not have coding knowledge may accidentally trigger this, let's not leave it to chance. SOLUTION The process we will do is simple, it will be enough to make sure that the given arg value is within the range we want, let's get started. // (cmd_gm.cpp) SEARCH; ACMD (do_mob) // CHANGE; ACMD (do_mob) { char arg1[256], arg2[256]; DWORD vnum = 0; two_arguments (argument, arg1, sizeof (arg1), arg2, sizeof (arg2)); if (!*arg1) { ch->ChatPacket (CHAT_TYPE_INFO, "Usage: /mob <mob vnum> <mob count>"); // Now it's correct.. - [MT2Dev Note] - 14/04/2024 return; } const CMob* pkMob = NULL; if (isnhdigit (*arg1)) { str_to_number (vnum, arg1); if ((pkMob = CMobManager::instance().Get (vnum)) == NULL) { vnum = 0; } } else { pkMob = CMobManager::Instance().Get (arg1, true); if (pkMob) { vnum = pkMob->m_table.dwVnum; } } if (vnum == 0) { ch->ChatPacket (CHAT_TYPE_INFO, "No such mob(%s) by that vnum", arg1); // I'm added info about vnum. - [MT2Dev Note] - 14/04/2024 return; } int iCount = 1; if (*arg2) { str_to_number (iCount, arg2); iCount = MINMAX (1, iCount, 40); // DevFix 121 } if (test_server) { iCount = MIN (40, iCount); } else { iCount = MIN (20, iCount); } while (iCount--) { CHARACTER_MANAGER::instance().SpawnMobRange (vnum, ch->GetMapIndex(), ch->GetX() - number (200, 750), ch->GetY() - number (200, 750), ch->GetX() + number (200, 750), ch->GetY() + number (200, 750), true, pkMob->m_table.bType == CHAR_TYPE_STONE); } } // (cmd_gm.cpp) SEARCH; ACMD (do_mob_aggresive) // CHANGE; ACMD (do_mob_aggresive) { char arg1[256], arg2[256]; DWORD vnum = 0; LPCHARACTER tch; two_arguments (argument, arg1, sizeof (arg1), arg2, sizeof (arg2)); if (!*arg1) { ch->ChatPacket (CHAT_TYPE_INFO, "Usage: /ma <mob vnum> <mob count>"); // Now it's correct.. - [MT2Dev Note] - 14/04/2024 return; } const CMob* pkMob; if (isdigit (*arg1)) { str_to_number (vnum, arg1); if ((pkMob = CMobManager::instance().Get (vnum)) == NULL) { vnum = 0; } } else { pkMob = CMobManager::Instance().Get (arg1, true); if (pkMob) { vnum = pkMob->m_table.dwVnum; } } if (vnum == 0) { ch->ChatPacket (CHAT_TYPE_INFO, "No such mob(%s) by that vnum", arg1); // I'm added info about vnum. - [MT2Dev Note] - 14/04/2024 return; } int iCount = 1; if (*arg2) { str_to_number (iCount, arg2); iCount = MINMAX (1, iCount, 40); // DevFix 121 } if (test_server) { iCount = MIN (40, iCount); } else { iCount = MIN (20, iCount); } while (iCount--) { tch = CHARACTER_MANAGER::instance().SpawnMobRange (vnum, ch->GetMapIndex(), ch->GetX() - number (200, 750), ch->GetY() - number (200, 750), ch->GetX() + number (200, 750), ch->GetY() + number (200, 750), true, pkMob->m_table.bType == CHAR_TYPE_STONE); if (tch) { tch->SetAggressive(); } } } // (cmd_gm.cpp) SEARCH; ACMD (do_mob_coward) // CHANGE; ACMD (do_mob_coward) { char arg1[256], arg2[256]; DWORD vnum = 0; LPCHARACTER tch; two_arguments (argument, arg1, sizeof (arg1), arg2, sizeof (arg2)); if (!*arg1) { ch->ChatPacket (CHAT_TYPE_INFO, "Usage: /mc <mob vnum> <mob count>"); // Now it's correct.. - [MT2Dev Note] - 14/04/2024 return; } const CMob* pkMob; if (isdigit (*arg1)) { str_to_number (vnum, arg1); if ((pkMob = CMobManager::instance().Get (vnum)) == NULL) { vnum = 0; } } else { pkMob = CMobManager::Instance().Get (arg1, true); if (pkMob) { vnum = pkMob->m_table.dwVnum; } } if (vnum == 0) { ch->ChatPacket (CHAT_TYPE_INFO, "No such mob(%s) by that vnum", arg1); // I'm added info about vnum. - [MT2Dev Note] - 14/04/2024 return; } int iCount = 1; if (*arg2) { str_to_number (iCount, arg2); iCount = MINMAX (1, iCount, 40); // DevFix 121 } if (test_server) { iCount = MIN (40, iCount); } else { iCount = MIN (20, iCount); } while (iCount--) { tch = CHARACTER_MANAGER::instance().SpawnMobRange (vnum, ch->GetMapIndex(), ch->GetX() - number (200, 750), ch->GetY() - number (200, 750), ch->GetX() + number (200, 750), ch->GetY() + number (200, 750), true, pkMob->m_table.bType == CHAR_TYPE_STONE); if (tch) { tch->SetCoward(); } } } // (cmd_gm.cpp) SEARCH; ACMD (do_fishing_simul) // CHANGE; ACMD (do_fishing_simul) // DevFix 121 { char arg1[256]; char arg2[256]; char arg3[256]; argument = one_argument (argument, arg1, sizeof (arg1)); two_arguments (argument, arg2, sizeof (arg2), arg3, sizeof (arg3)); unsigned char level = 100; unsigned char prob_idx = 0; int count = 1000; ch->ChatPacket (CHAT_TYPE_INFO, "Usage: /fishing_simul <level> <prob index> <count>"); ch->ChatPacket (CHAT_TYPE_INFO, "Limit: <level 0-100> <prob 0-100> <count 0-100000>"); if (*arg1) { if (level > 100) { return; } else { str_to_number (level, arg1); } } if (*arg2) { if (prob_idx > 100) { return; } else { str_to_number (prob_idx, arg2); } } if (*arg3) { if (count < 0 || count > 100000) { return; } else { str_to_number (count, arg3); } } fishing::Simulation (level, count, prob_idx, ch); } /* INFORMATION: */ The next action we will do may not actually cause a core down, but since it is a control that needs to be added, I will include it among these. Let's prevent the character whose yang amount has been changed by the GM from having an amount of yang we do not want; /* IMPORTANT NOTE: */ If you are using the "Extended Max Yang" system, that is, if you have increased the maximum amount of yang, REPLACE all int sections in the code below with long long int! // (cmd_gm.cpp) SEARCH; ACMD (do_set) // FIND INSIDE; case 0: // CHANGE; case 0: // Gold { int gold = 0; // If you use extended yang limit, change this int with long long int!!! - [MT2Dev Note] - 19/04/2024 str_to_number (gold, arg3); DBManager::instance().SendMoneyLog (MONEY_LOG_MISC, 3, gold); tch->PointChange (POINT_GOLD, gold, true); int after_gold = tch->GetGold(); // If you use extended yang limit, change this int with long long int!!!- [MT2Dev Note] - 19/04/2024 if (after_gold < 0) // DevFix 121 { tch->PointChange (POINT_GOLD, -after_gold, true); after_gold = 0; } if (after_gold > GOLD_MAX) // DevFix 121 { int difference = after_gold - GOLD_MAX; // If you use extended yang limit, change this int with long long int!!! - [MT2Dev Note] - 19/04/2024 tch->PointChange (POINT_GOLD, -difference, true); after_gold = GOLD_MAX; } } // Also useless log removed by me. - [MT2Dev Note] - 19/04/2024 break; -
3
Crystal Metinstone
Awesome!! Can u make it with other colors too? Like ice fire forest lightning ? -
4
Feeding game source to LLM
ChatGPT is obsolete today honestly. I use claude-3-opus LLM daily for commercial programming and it exceeds chatgpt by a mile. When it comes to token size it's like you said, not possible straight away with chatgpt. There's however a way to go around this with some additional layers of complexity like Cursor Editor although be warned its closed source. It's basically a fork of vscode that let's you ask LLMs about your code. Also you can ask it to write anything and it has the context of your entire codebase. I tested it a few months back and it wasn't bad honestly. I told it to explain some shit-code written by ymir that I didn't understand and it did quite well. -
113
-
10
-
4
Feeding game source to LLM
I had tried something similar before through custom GPT via ChatGPT, but instead of searching for bugs/exploits, I attempted to create a simple ping/pong system by providing all the details just to see what it could do for experimental purposes. However, speaking for ChatGPT, it doesn't automatically scan the entire content due to the large number of files. It only makes heuristic-based guesses based on the names or scans the files if specified. Even if it processes the entire content correctly, the whole processing takes a long time, so it starts skipping parts after a while until the main command is given. Additionally, even if you manage to achieve the desired result once, due to temperature imbalances, getting completely unrelated results in subsequent attempts is possible. Therefore, in summary, obtaining efficient results is not quite achievable. It's quite useful for conducting research on specific topics in specific parts rather than scanning the entire content. However, for now fully automating it is not very feasible, at least for ChatGPT.- 1
-
-
Recently Browsing
- No registered users viewing this page.
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now