Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 09/02/2022 in all areas

  1. 4 points
    Редактор ItemInfo Добрый вечер, дорогие товарищи. Написал небольшой редактор ItemInfo. Вид программы: LINK Разархивируйте все содержимое архива в Вашу папку resource. Папку icon доставать необязательно, но без неё не будут отображаться иконки. Также, если вы хотите добавить свои, но они зашифрованы, используйте ДАННУЮ ПРОГРАММУ. P.S. Приветствую пожелания/баги/критику))
  2. 3 points
    Решено с помощью: evtMouseDownContinue
  3. 3 points
    Привет, @Graf! 1) Добавить создание новых предметов и удаление существующих; 2) Действия (Чинить, Передать, Удалить и др.) заменить на чекбоксы (CheckBox); 3) Расу, Классы, Слоты и подобные поля заменить на чекбоксы; 4) Поля, которые предполагают поле допуска, например, бонусы, разбить на два поля: мин. и макс.;
  4. 2 points
    Дорогие друзья может кому то пригодиться регистрация с сайта piratia-su. Добавил фон https://disk.yandex.ru/d/4lUdgPf3nKPFFA
  5. 2 points
  6. 2 points
    Я наконец-то завершил долгую историю с парсингом, выводы тут - https://t.me/can_past_greg/51 и там же выше можно найти 2 новых стрима Следующие - продолжим покрывать пакеты и работу с базой
  7. 2 points
    [Исходники] Медали (ожерелья) со званиями Всем привет. Тема основана на Моде от @V3ct0r по ссылке Моды.. Это, конечно, интересно.. Но, думаю всем любопытно, как это реализовать на исходных файлах клиента, которые уже доступны несколько лет. Итак, открыв мод, мы видим 2 функции: inline void SetPreName( const int n_item, char* sz_name, DWORD& dw_color ) и // void CHeadSay::Render(D3DXVECTOR3& pos) Ищем тоже самое в своих исходниках и пинаем их.. У меня знаний плюсов 0,00000.....0001%, поэтому мб код не очень красивый, но все работает. То есть перекрутить его на исходники я смог) Итак. Ниже представлена функция SetPreName inline void SetPreName( int nItem, char* szName, DWORD& dwColor ) { static DWORD cha_id = 0; // Узнаем информацию о предмете CItemRecord* pInfo = GetItemRecordInfo( nItem ); DWORD COLOR_SKYBLUE = D3DCOLOR_ARGB(255, 168, 168, 255); // Если найден предмет if (nItem != 0) { // Если вещь существует в ItemInfo.txt if (!pInfo == 0) { // Узнаем тип предмета const unsigned short int type = pInfo->sType; // Если это ожерелье(25 тип) if (type == 25) { // Читаем цвет из ItemInfo.txt в столбце модели ланса const char* rgb = pInfo->chModule[1]; // Узнаем титул(столбец комментария) const char* title = pInfo->szDescriptor; // Конвертируем строку RGB цвета в 16-значное число const unsigned long color = strtoul(rgb, 0, 16); // Проверяем, что цвет и титул имеют место быть)) if (color != 0 && strlen(title) > 0) { // Устанавливаем титул strcpy( szName, title ); // Устанавливаем цвет dwColor = color; // Завершаем работу функции return; } switch( nItem ) { case 3936: strcpy( szName, g_oLangRec.GetString(7) ); dwColor = D3DCOLOR_ARGB(255,192,192,192); return; case 3937: strcpy( szName, g_oLangRec.GetString(8) ); dwColor = D3DCOLOR_ARGB(255,000,255,012); return; case 3938: strcpy( szName, g_oLangRec.GetString(9) ); dwColor = D3DCOLOR_ARGB(255,217,255,119); return; case 3939: strcpy( szName, g_oLangRec.GetString(10) ); dwColor = D3DCOLOR_ARGB(255,070,182,240); return; case 3940: strcpy( szName, g_oLangRec.GetString(11) ); dwColor = D3DCOLOR_ARGB(255,255,207,000); return; case 3941: strcpy( szName, g_oLangRec.GetString(12) ); dwColor = D3DCOLOR_ARGB(255,255,000,000); return; case 3942: strcpy( szName, g_oLangRec.GetString(13) ); dwColor = D3DCOLOR_ARGB(255,241,014,240); return; case 5331: strcpy( szName, g_oLangRec.GetString(922) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,192,192,192); return; case 5332: strcpy( szName, g_oLangRec.GetString(923) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,135,135,135); return; case 5333: strcpy( szName, g_oLangRec.GetString(924) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,255,255,255); return; case 5334: strcpy( szName, g_oLangRec.GetString(925) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,070,182,240); return; case 5335: strcpy( szName, g_oLangRec.GetString(926) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,000,255,012); return; case 5336: strcpy( szName, g_oLangRec.GetString(927) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,217,255,119); return; case 5337: strcpy( szName, g_oLangRec.GetString(928) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,255,207,000); return; case 5338: strcpy( szName, g_oLangRec.GetString(929) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,255,127,000); return; case 5339: strcpy( szName, g_oLangRec.GetString(930) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,255,000,000); return; case 5340: strcpy( szName, g_oLangRec.GetString(931) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,241,014,240); return; // TOM?? case 822: strcpy( szName, g_oLangRec.GetString(14) ); dwColor = D3DCOLOR_ARGB(255,255,000,000); return; // ???? case 823: strcpy( szName, g_oLangRec.GetString(15) ); dwColor = D3DCOLOR_ARGB(255,241,014,240); return; // ???? case 7238: strcpy( szName, "Developer" ); dwColor = D3DCOLOR_ARGB(255,5,153,252); return; default: szName[0] = '\0'; } } } } } Теперь находим строку во второй функции: s_dwNamePartsColors[NAME_INDEX][0] = _dwNameColor; И перед ней вставляем: // Узнаем информацию о персонаже const stNetChangeChaPart part = _pOwn->GetPart(); // Узнаем ID ожерелья int neck_id = part.SLink[enumEQUIP_NECK].sID; // Если ID ожерелья нашли, то.. if (neck_id != NULL) { // Узнаем информацию об ожерелье в ItemInfo.txt CItemRecord* item = GetItemRecordInfo(neck_id); // Если предмет найден в ItemInfo.txt if (item != 0) { // Узнаем Цвет Имени на месте модели Карциза const char* szColorName = item->chModule[2]; // Проверяем цвет на наличие if (std::strcmp(szColorName, "0") != 0) { //Дефолтный цвет ника unsigned int color = 0xFFFFFFFF; //Конвертируем цвет из ItemInfo color = std::strtoul(szColorName, 0, 16); // Устанавливаем цвет ника _dwNameColor = color; } } } Итог: P.S. надеюсь таких тем будет побольше, т.к. это все не так просто, как кажется и в одного понимать тяжело)) Также.. Надеюсь, что хоть кому-то помог)
  8. 2 points
    Sorry for the provocative title, but I want to hopefully start a discussion about this. I've been involved off-and-on in this community for the past 15 years of my life, and I think as most here do, we like, or even love, the game. But we mostly do because of a sense of nostalgia. It was part of our youth, our formative years, I personally started learning English thanks to being daily exposed to it in ToP official servers But I was too poor for them, so then I moved to private servers, met a lot of people, some smart, some stupid, some kind and some toxic. I was a kid then, and I didn't have much to contribute, but I learned a lot, I started exploring the very basics of programming, overall I feel it has been a positive experience. However, that's an experience, and I think that if you're here then yours is probably similar. That doesn't change the fact that the base game, and here I refer to the vanilla v1 version, is a terrible game. Now, some of us are attached to the "vanilla feel" (I'm part of that group) and some of us hate it, and play on more "customized" versions. I think it's time to reconsider our preconceptions, identify the problems, and think how to approach them. This isn't a "feature request", this isn't a "team search", this isn't me pitching an idea of mine as the solution to all problems there are. My proposal is to discuss what is awful about the game, and to propose potential solutions. A lot of work has been done already, but my superficial analysis is that a lot of it looks unfocused, or overly specific, useful, but it doesn't change the overall experience of the game. Yeah, the offline stall is an amazing quality of life feature, and I love it. But why do I like it the most? Well, the main reason honestly is that I can level up my pets while offline. It basically is a workaround for a terrible game mechanic. Technical problems require technical solutions, however, I'm of the firm belief that this isn't a technical problem, this game was meant to have those problems so that the solution could be sold to the player. What I feel like that I can give back to the community, is some insight of the economic context we are in. This game was structured to do what it did in the old servers, have problems so that solutions could be sold to the players, we can't fix it because it's not broken. We'd need to some degree re-define "vanilla" re-design core parts of the gameplay, make things worth doing, so we can finally enjoy the game. But there's a very real problem, how do you finance people that manage a game when the community is very small? That's not a technical problem, but it's a very big reason why there can't be a single server that doesn't sell power for dollars, and there is not much that can be done about it directly, we'd need a community 10 times the size to completely move to a different monetization method. So, I'll leave this here, throw your opinions in the comments, please keep them constructive and write down what you feel is a problem and propose a solution, or what you think could be a first step in the direction of said solution. Ask people you know to contribute, if you feel that it could help. I'll summarize and add my own in a week or so, if this post catches enough momentum. Have a good day.
  9. 2 points
    GameServer.cfg = GameServer You need to make another GameServer executeable for GameServer1,2,3,4,5,6.cfg, but mainly only should need 3 for the Regions of Ascaron, Deep Blue, Magical Ocean. Unless you have the GameServer.exe that opens all regions in 1 GameServer.exe
  10. 2 points
    Yes, i will do multi-language, but later)
  11. 2 points
    Сейчас немного углубился в свой проект. Чуть позже доработаю программу и сделаю мульти-язык. Спасибо)
  12. 2 points
    Работаем, Без преувеличения каждый день. Добрали новых участников команды, обучили работе с Пиратией. Не было ещё недели без работы. На данном портале есть участники нашего приватного дискорд канала где отслеживаются все коммиты, открыты каналы для общения, видны участники. Думаю они не дадут мне соврать. При наличии конкретного промежуточного результата будем рады поделиться.
  13. 2 points
  14. 2 points
    https://pkodev.net/topic/386-the-source-code-is-available/ (Files are unsorted / not organized and you need to use DLLs from different folders iirc) https://pkodev.net/topic/5585-co-source-development-repository (Newest source codes Corsair Online by KONG & his former team) https://gitlab.com/deguix/corsairs-online-public (Repository by deguix) https://mega.nz/file/OupTjIYK#LUIRAJhhE1p_DOtY8cv37IdVXHmiBWW5swa2ysFzU2g (Clean CO Client) https://mega.nz/file/j5QySCyC#8hjgzFz3KKHEL2zczZaLXw7rqDagUEzIDSSFKVRgjBE - EffectEditor, it has some random crashes when selecting some effects (Compiled By Wrexor) https://mega.nz/file/vxJEnZLK#7HkoayLIzE_gPFQ24lFIG7PXOV8eokfU8git3WP6IQ0 (These are the source codes for EffectEditor i think, Visual Studio 2003 is required to compile them as far as i know) You can try to search for that effect using the EffectEditor https://streamable.com/h8zcy6 (Video preview)
  15. 2 points
    @fotostocker Открываешь аддон с Vip системой. Ищешь: State_VIP_Add Приводишь к виду: State_VIP_Add = function(Player, StateLv) local Table = DataFile:Init(VIPSystem.Conf.Path, Table):Load() local PID = GetCharID(Player) if (Table[PID] ~= nil) then local VIPLv = Table[PID].VIPLv if (VIPLv ~= nil) and (VIPLv > 0) then local STR = VIPSystem.Conf.Bonus[VIPLv].STR local AGI = VIPSystem.Conf.Bonus[VIPLv].AGI local ACC = VIPSystem.Conf.Bonus[VIPLv].ACC local CON = VIPSystem.Conf.Bonus[VIPLv].CON local SPR = VIPSystem.Conf.Bonus[VIPLv].SPR local DEF = VIPSystem.Conf.Bonus[VIPLv].DEF local PR = VIPSystem.Conf.Bonus[VIPLv].PR local MSPD = VIPSystem.Conf.Bonus[VIPLv].MSPD SetCharaStatev(STR, Player, ATTR_STATEV_STR, "STATE_VIP") SetCharaStatev(SPR, Player, ATTR_STATEV_STA, "STATE_VIP") SetCharaStatev(AGI, Player, ATTR_STATEV_AGI, "STATE_VIP") SetCharaStatev(CON, Player, ATTR_STATEV_CON, "STATE_VIP") SetCharaStatev(ACC, Player, ATTR_STATEV_DEX, "STATE_VIP") SetCharaStatev(DEF, Player, ATTR_STATEV_DEF, "STATE_VIP") SetCharaStatev(PR, Player, ATTR_STATEV_PDEF, "STATE_VIP") SetCharaStatev(MSPD, Player, ATTR_STATEV_MSPD, "STATE_VIP") ALLExAttrSet(Player) end end end Далее ищешь: State_VIP_Rem Приводишь к виду: State_VIP_Rem = function(Player, Statelv) RemCharaStatev(0, Player, ATTR_STATEV_STR, "STATE_VIP") RemCharaStatev(0, Player, ATTR_STATEV_STA, "STATE_VIP") RemCharaStatev(0, Player, ATTR_STATEV_AGI, "STATE_VIP") RemCharaStatev(0, Player, ATTR_STATEV_CON, "STATE_VIP") RemCharaStatev(0, Player, ATTR_STATEV_DEX, "STATE_VIP") RemCharaStatev(0, Player, ATTR_STATEV_DEF, "STATE_VIP") RemCharaStatev(0, Player, ATTR_STATEV_PDEF, "STATE_VIP") RemCharaStatev(0, Player, ATTR_STATEV_MSPD, "STATE_VIP") ALLExAttrSet(Player) end Затем ищем функцию в skilleffect.lua, которая отвечают на "поссейшн". Называется она: State_JLFT_Add Все бонусы заменяем на подобные (это пример с моего тестового сервера, у Вас может что-то отличаться): if Item_ID ==232 then --local star = GetChaAttr( role , ATTR_BSTR )*statelv local star = lv_JL SetCharaStatev(star, role, ATTR_STATEV_STR, "STATE_JLFT") end Затем ищем функцию: State_JLFT_Rem Приводим к виду: function State_JLFT_Rem ( role , sklv ) RemCharaStatev(0, role, ATTR_STATEV_STR, "STATE_JLFT") RemCharaStatev(0, role, ATTR_STATEV_AGI, "STATE_JLFT") RemCharaStatev(0, role, ATTR_STATEV_DEX, "STATE_JLFT") RemCharaStatev(0, role, ATTR_STATEV_CON, "STATE_JLFT") RemCharaStatev(0, role, ATTR_STATEV_STA, "STATE_JLFT") RemCharaStatev(0, role, ATTR_STATEV_PDEF, "STATE_JLFT") ALLExAttrSet(role) RefreshCha(role) end
  16. 2 points
    Всё довольно просто: NpcInfoReload('Доска Розыска', N_garner_119) - где "Доска Розыска" название НПС, "N_garner_119" - функция. Обновляет конечно не в реальном времени, нужно диалог с НПС переоткрыть.
  17. 2 points
    @V3ct0r Все ссылки недоступны. В корзину)
  18. 2 points
    I honestly have been playing Lost Ark, it is basically a better updated version of TOP. The game focuses a lot on playing "alts" The game contributes to a lot of time spent on reaching your main to a certain Gear Level, and then focusing on your alts to bring it up near your main to help provide resources for your main. They have a nice gem system/skill/card set system. There isn't much PvP in Lost Ark, its more of you do dungeons together with your party, and beat bosses, and bid gold on items. The "Honing" - as we would call in TOP "Forging" with + Equipments, is only to satisfy the player wanting to seek being the "top" equipment geared, but in theory it is only to reach certain Item Level Requirements to unlock/do raids. They use auction house as well, to buy apparels, gemming enhancements, pots, pets.
  19. 2 points
    Функция SynChaKitbag(role, 13) с атрибутом 13 - обновляет только главный инвентарь. Нужно заменить атрибут на другую цифру, вроде на 4 (могу ошибаться, давно с этим работали, поэкспериментируй с разными).
  20. 2 points
    Lua: Server scripts. C++: Server/Client sources.
  21. 1 point
    I will open a server with your files,im trying now to attach new stall server on your files.
  22. 1 point
  23. 1 point
    Today will start add multi-language and fix correct encoding ItemInfo.txt + Add some moments, which advised V3ctor. ------------------------------------------------ Сегодня начну дорабатывать программу, в частности определение кодировки(будет зависеть от выбранного языка программы) + Исправлять моменты, которые посоветовал Виктор.
  24. 1 point
    Да, кстати, @Graf, можно перевести программу на английский язык и выложить в англоязычном разделе, я, думаю, программа будет пользоваться популярностью.
  25. 1 point
    Hello @Mesut, Google -> The error message text. This is not a website-specific error.
  26. 1 point
    The issue is not "boats or no boats", it's that they feel like two totally disconnected games most of the time. There is some interesting gameplay part of sea bossing, outside 40-60+ sea voys ganging up on a single mob/boss all sea game mechanics are sluggish, the time needed to simply get from a place to another is too long and farming items in the sea is extremely flat. It feels like the original devs gave up on the sea in the first quarter of the game. My approach if I were to re-structure that would be : increase baseline boat speed, do not have the "boat" as an item the player makes, but as an intrinsic part of the character, have every character have at least some of their skill useable in the sea (with different effects), Triple overall monster density, so the sea isn't as deserted, and take a hard look at consumables, perhaps making some manufacturing easier, or take out some basics (like hp and fuel) out of manufacturing and have it more accessible, It'd be very hard to take the sea completely out of the game without it feeling like a different game, but at least having it as a less miserable experience would improve overall enjoyment of that aspect. Thing is, this game does a thing that games shouldn't do, It shoehorns players in very small but optimal tasks, there is not much agency/choice of what to do with your time outside dungeons, there are "optimal" things that are way better time investments than others, while a "meta game" would exist, it should also be taken in account that time investment in a specific thing should yield rewards within a standard deviation of the mean IMO. This is true for all mechanics, not just the sea, look at class repeatable "life quests" (not story quests) for example.
  27. 1 point
    Распишу на будущее как искать подобные проблемы подсматривая в исходный код. При форже LUA вызывают функцию lua_AddItemFinalAttr inline int lua_AddItemFinalAttr(lua_State* pLS) { ... long lAttrID = static_cast<int>(lua_tonumber(pLS, 2)); short sAttr = static_cast<short>(lua_tonumber(pLS, 3)); if (!pSItem->AddAttr(lAttrID, sAttr)) { lua_pushinteger(pLS, 0); return 1; } ... } Тут нам интересна функция AddAttr inline short SItemGrid::AddAttr(long lAttrID, short sAttr) { if (!CheckAttr()) return 0; return CAttr.AddAttr(short(lAttrID), sAttr); } Тут мы видим, что тип аргумента должен быть short Для того чтоб все работало нужно изменить аргументы функции и этот массив + все места где он используется. class CItemAttr { ... private: short m_sAttr[ITEMATTR_MAX_NUM]; ... }
  28. 1 point
    Нашел корень проблемы. В Gameserver.exe на прибавку от самоцветов стоит Short тип данных от -32767 до +32767. Надо хексить ГС и менять тип данных на это. Но как это сделать решения у меня нет.
  29. 1 point
    Я только поставил, но у меня момент разработки. Прошу не удалять/не чистить тему)
  30. 1 point
    AccontServer -> TradeDB. Передавал значение ПСТ. Подробно не разбирал.
  31. 1 point
    Решение Ошибка игрового клиента "Account server has encountered a malfunction" Может появляться из-за триггеров в Ваших базах данных. Если решения из данной темы Вам не помогли, посмотрите в гугле, как увидеть триггеры в Вашей БД. Удаление триггера выглядит следующим образом: USE имя базы GO IF OBJECT_ID ('Имя триггера', 'TR') IS NOT NULL DROP TRIGGER Имя триггера; GO
  32. 1 point
    Также, чтобы не использовать картинки с Мордо, вытащите из архива Арбах (тема с pkodev) папки icons и monsters.
  33. 1 point
    Трансляция закончена, она должна быть сохранена на ютубе, как запись, так что можно будет посмотреть потом Результат в конце видео Трансляция будет ежедневной вечерами
  34. 1 point
    Первая трансляция запущена -
  35. 1 point
    1251 accounts and 2012 players online
  36. 1 point
    Graf огромное спасибо все поправил как ты и сказал но блин оказывается проблема была не в самом модуле на вип систему а проблема в феи. фея просила дополнительный код ( if str~=nil and str~=0 then)---- я так понял он отвечает за проверку при пассе. и данного кода не было у Морды. спасибо тебе ты можно заставил меня найти эту ошибку. А я грешил на вип систему. Огромное тебе спасибо еще раз.
  37. 1 point
    В skilleffect.lua или в папку addon, если у Вас присутствует. Работает таким образом: //Добавляем эффект SetCharaStatev(strVal, player, ATTR_STATEV_STR, "STATE_AC") //Где STATE_AC - придуманное название //Снимаем эффект RemCharaStatev(0 , player , ATTR_STATEV_STR , "STATE_AC")
  38. 1 point
  39. 1 point
    Hello @Mario and @dragontechi, make sure that you are using the latest revision of the source code. Because the code in the screenshot is different from the one in the project repository on GitHub.
  40. 1 point
    Hello @zeon1000, You may also need SQL if you will be working with the game database and PHP for website programming.
  41. 1 point
    Hello @IfYouSeeMeRun, Yes, it is necessary. You can learn how to install the mod loader and the mod here:
  42. 1 point
    Hello @IfYouSeeMeRun, This piece of code is for server developers who want add that feature into their game client, this is not a tweak in its natural sense.
  43. 1 point
    Редакторы Всем привет. Предлагаю разнообразные редакторы для файлов папки resource. Пример: Если хотите приобрести - лс.
  44. 1 point
    Just some changes I've made from PKO 1.38 + Tools from Vectors File. Will keep it updated to display future file used for a server. Credits to All that has helped me from the past and on going future. *Fixed Fairy Poss for 2nd Gen/Mjr/Angela/August pets *Added Cloak can upgrade to Lv7 *Added Anti-Dupe System *Changed Pet Max Lvl Limit from 41 to 61 (For Normal/Great Fruits) ->Uses a check, so if Pet Lv 60 -> Use Great Fruit -> Fail to lvl. *Added Unfuse Scroll (When equipment is fused, can use scroll to defuse) *Added Buff potion (Grants buffs for 8 minutes when item used) *Added Career Lot Scroll (Grants all Career Lot bonus stats for 10 minutes when item used) *Added TOP Neck (displays TOP effect above characters head) (Also changes character's color name) *Added Custom Icons to certain items to (differentiate and avoid scams) *Banker now has option to open bank/convert inventory gold to notes. -> 100k,500k,1m Notes *Added Angela Junior + 6 Different Angela Junior Colors *Added August Pets *Added New Wings (Much like Angelic/Devil etc wings) *Added PK Ranking system *Added Apparel's NPC -> Default Classic TOP Apparels *Added New Apparels -> Alucard etc *Ordered Apparels By Rows and Columns *All Apparels have Race defined -> [L] Sreet Love - Armor [C] - Street Love Armor [P] - Street Love Armor [A] - Street Love Armor (L = Lance) (C = Carsise) (P = Phyllis) (A = Ami) *Added Universal Pliers (Can extract any gem from any equipment such as rings/necklace) *Added 110% and 120% Upgrading Scrolls (Double click to upgrade fused apparels with 100% Effectiveness) *Added Lv4 Gem Combiner (Can make multiple lv4's without dropping/placing gem in bank if higher than lv1) *Added F1-F12 Skill bar + Extra Bar on Top + Tab Switcher *Added Big Inventory 48 Slot via (Alt+E) *Added Character Running while in Safezone *Added Instant Skill NPC (Defined by Class - will teach all skills according to class) *Added Removal of Corals for Voyager classes *Added Gem Slot Change (Changes Gems order via forged equipments) *Added 110% Instant Apparel Upgrade Stone *Added 120% Instant Apparel Upgrade Stone *Added Brackets to NPC's name [NPC Name] *Added Custom map for CA (Removed useless objects, map is much easier to look around ex: Bar and Commerce have roof opened) *Added Spawn Script for Chaos Argent -> (If player enters at :15 -> Expert Chest Spawns, no matter how late a player enters, correct mobs/wave will spawn) *Added Anti-Relog to Chaos Argent -> If Player leaves the map for whatever reason, it will punish leaver for 2 minutes. *Added New Spawn Points inside Chaos Argent *Added Hairstyle items to Hairstylist *Added Bracelet/Handguards/Belts *Added Cooldown timer to Healing Pots (HP/SP) *Added FC 1/2/3 Chest -> FC 1 Chest - Lv40 Rings -> FC2 Chest -> Unsealed Incantation Weapons FC Chest 3 -> Earth Sealed Armor's *Added DS 1/2/3 Chest -> DS 1 Chest - Lv50 Rings -> DS 2 Chest -> Fire Sealed Set Pieces -> DS 3 Chest -> Fire Sealed Weapons *Added 10k/100k gold Note *Added Bank Note (Double Click Note to open Bank) *Changed Tattoo Apps/Armor's from 27 to 22 *Changed Skillinfo Tattoo Requirement -> Armor Requirement *Added Nightmare Demonic Helmet -> Can upgrade to lv 10
  45. 1 point
    [Мод] Медали (ожерелья) со званиями Модификация позволяет создавать медали (ожерелья) с различными званиями, которые отображаются в скобках перед именем персонажа (см. скриншот). Так же такие ожерелья позволяют менять цвет имен персонажей. Текст, цвет звания и цвет имени персонажей указываются в ItemInfo.txt для предметов с типом 25 (ожерелье). 1) Текст звания указывается в описании предмета. Максимальная длина звания составляет 15 символов. 2) Цвет звания в формате FFRRGGBB - вместо модели на Ланса в 5-ом поле. 3) Цвет имени персонажа в формате FFRRGGBB - вместо модели на Карциза в 6-ом поле. Примеры медалей со званиями: XXXX Medal 1 (Red Admin) l0005 10130005 FFFF0000 0 0 0 0 0 25 0 0 0 0 0 1 1 1 1 1 1 32 -1 1 -1 0 0 5 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,1000 10000,10000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Admin XXXX Medal 2 (Green maindev) l0005 10130005 FF00FF00 0 0 0 0 0 25 0 0 0 0 0 1 1 1 1 1 1 32 -1 1 -1 0 0 5 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,1000 10000,10000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 maindev XXXX Medal 3 (Blue PkoDEV) l0005 10130005 FF0000FF 0 0 0 0 0 25 0 0 0 0 0 1 1 1 1 1 1 32 -1 1 -1 0 0 5 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,1000 10000,10000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 PkoDEV Пример ожерелья со званием и цветным именем: XXXX Medal 2 l0005 10130005 FF00FF00 FFFF8000 0 0 0 0 25 0 0 0 0 0 1 1 1 1 1 1 32 -1 1 -1 0 0 5 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,1000 10000,10000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 PKOdev.NET Требования Установленный Загрузчик модов для сервера и клиента (PKOdev.NET mod loader). Информация о моде Название: pkodev.mod.title; Версия: 1.0; Автор: V3ct0r; Тип: для клиента (Game.exe); Поддерживаемые исполняемые .exe файлы: GAME_13X_0, GAME_13X_1, GAME_13X_2, GAME_13X_3, GAME_13X_4, GAME_13X_5. Установка 1) В директории "mods" Вашего клиента создайте папку "pkodev.mod.title"; 2) Поместите в неё файл DLL-библиотеки мода "pkodev.mod.title.13x_<ID>.dll" для Вашей версии Game.exe; 3) Добавьте в ItemInfo.txt сервера и клиента новые медали (ожерелья) со званиями в соответствии с примером из шапки темы. Скомпилируйте ItemInfo.txt для клиента. Скачать 1) Бинарные файлы мода (.dll); 2) Исходный код мода для Visual Studio 2019 Community (C++). Если Вы столкнулись с какой-либо проблемой, багом или у Вас возникли вопросы, то пишите в данной теме.
  46. 1 point
    Hello @noanshadow, 1) Create a file named 'pkodev.promo.lua' in the folder 'GameServer\resource\script\calculate\mods': -- Print a log print("Loading pkodev.promo.lua") -- Check that HandleChat function exists if (HandleChat == nil) then -- Write a log print("pkodev.promo.lua: Warning, the HandleChat() function is not exist!") -- Do not load the script return end -- Promocodes system promo = promo or { } -- Name of the file with promocodes promo.file = "promocodes.dat" -- List with promocodes promo.list = {} -- Save data to file promo.save = function(path) -- Open the file local file, msg = io.open(path, "w") -- Check that file is open if (file == nil) then -- Write a log LG("pkodev.mod.promo", string.format("Can't save the list with promocodes to the file '%s': '%s'!", path, msg)) return false end -- Write data for key, value in promo.list do -- Write a line local ret = file:write(string.format("{%s, %d, %d}\n", value.code, value.id, value.count)) -- Check that line is written if (ret == false) then -- Write a log LG("pkodev.mod.promo", string.format("Can't write the data to the file '%s'!", path)) return false end end -- Flush the data file:flush() -- Close the file file:close() -- Write a log LG("pkodev.mod.promo", string.format("The list with promocodes has been successfully saved to the file '%s'!", path)) return true end -- Load data from file promo.load = function(path) -- Remove old promocodes for k in pairs (promo.list) do promo.list[k] = nil end -- Open the file local file, msg = io.open(path, "r") -- Check that file is open if (file == nil) then -- Write a log LG("pkodev.mod.promo", string.format("Can't load the list with promocodes from the file '%s': '%s'!", path, msg)) return false end -- Read file line by line for line in file:lines() do -- Extract data from the line local ret, _, code_, id_, count_ = string.find(line, "^{([A-Za-z0-9]+)%s*,%s*([0-9]+)%s*,%s*([0-9]+)}$") -- Check that string matches the pattern if (ret ~= nil) then -- Add data to the list table.insert( promo.list, { code = code_, id = id_, count = count_, } ) end end -- Close the file file:close() -- Write a log LG("pkodev.mod.promo", string.format("%d promocodes have been succsessfully loaded from file '%s'!", table.getn(promo.list), path)) return true end -- Handle chat function hook promo.hadle_chat__original = HandleChat HandleChat = function(role, msg) -- Check that message has the '/' symbol if ( string.sub(msg, 1, 1) == "/" ) then -- Get promocode local ret, _, code_ = string.find(msg, "^/([A-Za-z0-9]+)%s*$") -- Check that promocode is found if (ret ~= nil) then -- Search the promocode in the list for key, value in pairs(promo.list) do -- Compare promocodes if (value.code == code_) then -- Write a message BickerNotice(role, string.format("You entered the promocode '%s': %s x %d!", value.code, GetItemName(value.id), value.count) ) -- Give an item GiveItem(role, 0, value.id, value.count, 0) -- Write a log LG("pkodev.mod.promo", string.format("Player '%s' entered a promocode '%s' and received '%s' x %d!", GetChaDefaultName(role), value.code, GetItemName(value.id), value.count) ) -- Remove the promocode from the list promo.list[key] = nil -- Save the list to the file promo.save(promo.file) -- Synchronize the promocodes list local packet = GetPacket() WriteCmd(packet, 4015) WriteDword(packet, GetRoleID(role)) WriteString(packet, string.format("promo.list[%d]=nil", key)) SendPacket(role, packet) -- Do not call the original function HandleChat() return 0 end end end end -- Call the original function HandleChat() return promo.hadle_chat__original(role, msg) end promo.load(promo.file) 2) Include it in the file 'SkillEffect.lua' after 'functions.lua': dofile(GetResPath("script\\calculate\\mods\\pkodev.promo.lua")) 3) In the root directory of the GameServer create a file named 'promocodes.dat' and write the list of promocodes in the file: {<Promocode>, <Item ID>, <Item number>} Example: {agjtjSfsaAS34, 1849, 45} {kgjKKKsnggklsaa, 885, 1} {0004121aAf, 1848, 10} 4) To use the promocode, you need to enter it in the local chat: /<Promocode> Example: /agjtjSfsaAS34 The player will get Cake x 45. 5) All logs can be found in the file 'GameServer\LOG\log\pkodev.mod.promo.txt'.
  47. 1 point
    Программа для просмотра .lmo,.lgo,.lab Автор: gamemaker С помощью данной программы можно просматривать модели и анимации клиента, а также экспортировать модели в формат .obj. Как пользоваться: 1) Нажмите на кнопку "Choose Directory"; 2) В диалоге выбора директории выберите папку с клиентом; 3) Нажмите на кнопку "Open Directory"; 4) В списке, который расположен в левой части окна программы, появятся модели; 5) Чтобы просмотреть модель, кликните по ней левой кнопкой мышки; 6) Если модель содержит анимацию, станет доступна кнопка ">". Нажмите ее для просмотра анимации. Скачать: Программа Исходный код
  48. 1 point
  49. 1 point
    Server files / resource / scripts / calculation / variable.lua Ctrl + f ( FIND ) "StoneAttrType_Num" edit the number to + 1 w/e it is currently is (adding 1 gem) this will be known as ## StoneAttrType_Num = ## Continue scrolling to the end of "StoneAttrType" list, add, and edit this StoneAttrType [##] = ITEMATTR_VAL_AAAA ## = same as above Replace AAAA with one of the following STR --Strength DEX --Accuracy AGI --Agility CON --Constitution STA --Spirit MXHP --Max Hp MXSP --Max Sp MNATK --Attack DEF --Defense HIT --Hit rate FLEE --Dodge MF --Raise drop rate o_O untested --lol pick pocket-- CRT --Crit rate HREC --Hp rec SREC --Sp rec ASPD --Attack speed MSPD --Movement speed PDEF --Physical resistance Next Find "StoneEff_Num" Then edit the number ## to same as above Continue Scrolling to the end of "StoneEff" list, add, and edit this StoneEff [##] = # ## = same as above Replace # with the amount of stats the gem will give Next Find "StoneTpye_ID_Num" Then edit the number ## to same as above Continue Scrolling to the end of "StoneTpye_ID" list, add, and edit this StoneTpye_ID [##] = #### ## = same as above Replace #### with Iteminfo.txt ID Next find "StoneEffType" Continue Scrolling to the end of "StoneEffType" list, add, and edit this StoneEffType[##] = # ## = same as above Replace # with effect type 1-4 1) attack 2) defense 3) havent seen it used 4) other Next find "StoneItemType" Continue Scrolling to the end of "StoneItemType" list, add, and edit this StoneItemType[##] = { #,0 } ## = same as above Replace # with where u want the gem to go (can be more than one ex: {11,22,27,0}) 1) 1 handed sword 2) 2 handed sword 3) Bow 4) Firegun 7) daggers 9) Staffs 11) shield 20) ami caps 22) armors 23) gloves 24) shoes 27) tattoos Note: I don't know who owns this guide, it's been posted by serverdev admin so I'm sure it's not his guide.
  50. 1 point
    Данный список характеристик можно использовать для создания новых гемов или как нибудь усиливать предмет с помощью ваших систем апгрейда, так же весь этот список есть в Iteminfo. Так же ограничить эти характеристики можно в файле Init_Attr. ITEMATTR_VAL_STR --Сила ITEMATTR_VAL_AGI --Ловкость ITEMATTR_VAL_DEX --Точность ITEMATTR_VAL_CON --Телосложение ITEMATTR_VAL_STA -- Дух ITEMATTR_VAL_LUK -- Удача ( не используется) ITEMATTR_VAL_ASPD -- Скорость атаки ITEMATTR_VAL_ADIS -- Дистанция атаки ITEMATTR_VAL_MNATK -- Минимальная атака ITEMATTR_VAL_MXATK --Максимальная атака ITEMATTR_VAL_DEF --Защита ITEMATTR_VAL_MXHP -- Максимальное кол-во хп ITEMATTR_VAL_MXSP -- Максимальное кол-во мн ITEMATTR_VAL_FLEE -- Уклонение ITEMATTR_VAL_HIT -- Шанс попадания ITEMATTR_VAL_CRT -- Шанс критическтого попадания ITEMATTR_VAL_MF -- Шанс дропа ITEMATTR_VAL_HREC --Востановление хп ITEMATTR_VAL_SREC -- Востановление мн ITEMATTR_VAL_MSPD -- Скорость бега ITEMATTR_VAL_COL -- Не знаю. ITEMATTR_VAL_PDEF -- Физическое сопротивление
  • Newsletter

    Want to keep up to date with all our latest news and information?
    Sign Up
×
×
  • Create New...