Jump to content

V3ct0r

Administrators
  • Content Count

    2,889
  • Joined

  • Last visited

  • Days Won

    519

Everything posted by V3ct0r

  1. Do you need php script that will count days since server opened and show it on website or what?
  2. But he told that 'when he removed this, instead, the exp MULTIPLYED by 50'
  3. @Onioni 1) You can use files. For example, PHP script will write to .txt file item ID. Then in cha_timer() function server will read that file and add item with 'item ID' to character's kitbag. 2) You can write extension for GameServer.exe (DLL or external program) and send item id and count via sockets to server. But it is hard to do.
  4. Обновление! + Поддержка GameServer.exe версии 2.4; + Исправил баг, когда программа не могла открыть GameServer.exe, если в пути до него присутствовали пробелы.
  5. Обновил гайд. Добавил список адресов GM-команд для GameServer.exe версии 2.4.
  6. Protect your GM Commands Thanks to @c0d3x for translate from Russian Hello! Let's pretend as if your server has been hacked and the hacker received access to the GM account afterwards. In this thread I'll try to explain how you can secure GM commands and make the hack nearly pointless. Attention! You must pay the most attention to &lua and &lua_all commands(!). If you have got them enabled on your server and somehow hacker manages to get into a GM account, he could get control over every thing, including your root folder; rdp access and so on and so forth. You can read more about those commands HERE. Be as safe as you can, and after reading this thread try Not to use the same commands as I'm gonna use as an example! 1st way. No GM commands - no problems! If you either use commands rarely or don't use them at all, then complete removal makes sense. You could edit characters or give them items using third party software or manually via database. To disable GM commands you should do some edits in GameServer.exe Version | Size (KB) | Address --------+--------------+------------ 1.36 | 2 040 | 0x000DE1E8 1.38 | 2 088 | 0x000E6852 2.0 | 3 000 | 0x00161349 Open GameServer.exe in any HEX editor and goto the address from the table above. I will be working with 1.38 GameServer.exe using HxD editor. Replace 23 bytes starting from this address to 0x90. Save your edits and make sure GM commands don't work in game. 2nd way. Rename gm commands. The hacker will not be able to use GM commands if he doesn't know their names. So, you have to change every command's name. Takes time but it's worth it To change GM command name, open GameServer.exe in any HEX editor. Find GM command and then change its name. New command's name length must be the same as the older one had (keep the same size!). For instance, let's rename &make to &give. Please note that 'make' and 'give' have the same length (they both have 4 symbols). Open GameServer.exe in HEX editor and find a string "make": You will find more strings that contain "make" in it ("MakeItem", "make failed!", "GMmakeLog" and such - we do not need them!). Simply ignore them and continue searching. When you find the needed one you'll see another GM commands' names there, too: Change it to "give": Save current edits. Do the same procedure for another GM commands. UPDATE! You can use this program: GM command address list GameServer.exe version 1.36 (2 040 KB): GameServer.exe version 1.38 (2 088 KB): GameServer.exe version 2.4 (3 000 KB) 3rd way. GameServer.exe with HandleChat(), GetGmLv() and SetGmLv() functions. To use this way you have to use modified GameServer.exe which has the functions above in it. Function HandleChat(userdata role, string message) works out when a character writes messages into local chat. Since all GM commands are being written into local chat, too, you can create a script that will control their execution. Like, you can make so that GM commands work only if the character, who executes them, has a specified ID or name. In addition to this, you can make so that the character has to be in a specified guild, where only administrators and/or GMs could enter. It all depends on your fantasy! To find out if character is a GM, use function GetGmLv(userdata role). Using function SetGmLv(userdata role, number level) you can edit account's gm level to which the character is attached to. Also, using the same function you can set GM level to 0 (ordinary player) in HandleChat() function in case the character hasn't passed the verification. Let's make a simple system to control GM commands: 1) GM commands can be used only if your name is: "V3ct0r", "pkodev" or "Administrator". 2) If the character is GM and he/she hasn't passed the verification, set GM level to 0, kick the character and send the message for Administrator to the GameServer.exe console. Firstly, let's create an array inside variable.lua with characters' names that could use GM commands, we'll call it PlayerCanUseCmd: PlayerCanUseCmd = {} PlayerCanUseCmd["V3ct0r"] = 1 PlayerCanUseCmd["pkodev"] = 1 PlayerCanUseCmd["Administrator"] = 1 Then let's make a script inside HandleChat() in functions.lua: -- Local chat handler function HandleChat(role, message) -- Check whether the character is a gm or not if (GetGmLv(role) > 0) then -- Check if the character has executed the command if (string.find(message, "&") == 1) then -- Check character's name local cha_name = GetChaDefaultName(role) if (PlayerCanUseCmd[cha_name] ~= nil) then -- The character can use the command return 1 end -- The character isn't allowed to use the command -- Set GM level to 0 SetGmLv(role, 0) -- Kick it from the server KickCha(role) -- Send a message to the console print("Player [" .. cha_name .."] tried to use GM command!") -- Don't let the character execute the command return 0 end end return 1 end To kick a character we have to add a KickCha() function, add it anywhere into functions.lua: function KickCha(character) local pkt = GetPacket() WriteCmd(pkt, 1505) SendPacket(character,pkt) end Thread is open for the further discussion. You're welcome to ask questions or give ideas in the comments. Thank you and best of luck!
  7. V3ct0r

    GM Command editor

    Update! + 2.4 GameServer.exe is supported; + Fixed bug when the program doesn't see spaces on directories like "D:\Windows 10\Desktop\blahblah". @Foxseiz, @Lucky
  8. @Treuno86 MSSQL 2014 Express. It is free.
  9. @Jelly You need GameServer.exe with HandleChat function. In that function you can write script which will check how many times player send messages to chat. For example: variable.lua LocalChat = {} functions.lua function HandleChat(role, message) local minute = os.date("%M") if (LocalChat[role] == nil) then LocalChat[role] = {} else if (LocalChat[role].minute == minute) then -- 25 messages are maximum if (LocalChat[role].number > 25) then -- Mute player SystemNotice(role, "Don't flood in local chat please!") return 0 else LocalChat[role].number = LocalChat[role].number + 1 end else LocalChat[role].minute = minute LocalChat[role].number = 1 end end return 1 end Note: haven't tested
  10. Do you can upload your GroupServer.exe?
  11. @NMS3RR Все-таки хочется более основательных доказательств, потому что сам понимаешь, говорить могут все что угодно. Мне известно, что исключительными правами на игру всегда обладала компания-разработчик Moliyo. Она продавала лицензию на игру ряду компаний: Пиратия (Россия) - Нивал (Аструм Нивал), позже Mail.ru; Pirate King Online (Южная Азия) - Sing Gium; Tales of Pirates (Северная Америка) - IGG; XHDW (Китай) - MOLI (?). Затем компания как-то забила на нашу игру начала разрабатывать другую, Tales of Ocean Fantasy, которая не взлетела и Moliyo закрылась. Дальнейшая судьба компании мне неизвестна. А после закрылись все официальные серверы. Либо закончилась лицензия, которую негде взять, либо нерентабельно (?). Также примечательно, что на оф. серверах перестали выходить обновления и они начали делать отсебятину (например, Снежная война на ру. оф. сервере).
  12. @NMS3RR Нет, просто так совпало, что я тогда начал обучение программированию. Я писал программы и скрипты для сервера в качестве практики.
  13. @NMS3RR Компании "Моли" больше нет, следовательно исходники и бинарные файлы никому не принадлежат.
  14. @NMS3RR Мне, например, просто интересно взглянуть на исходники. Также с помощью исходных файлов можно легко исправить многочисленные баги и добавлять новые возможности. В общем, кому-нибудь, да понадобятся. На фоне остальных "продавцов" эта тема более похожа на правду, но вопрос в другом. Даже если это настоящие исходники, откуда этот человек их взял? Если нашел в шаре и пытается нам продать, то это нехорошо.
  15. Для чего Вам нужен игровой сервер? Сабж. Пишите в этой теме для чего Вам нужен игровой сервер! Опрос открытый, ники проголосовавших всем видны. Также можно выбрать несколько вариантов ответа. Начну с себя. В первую очередь, это мое хобби! В первый раз, когда я запустил сервер, естественно я зафоржился по максимуму с помощью GM-панели и посмотрел как оно выглядит, побывал на картах, на которые никогда не смог бы попасть на оф. сервере. Потом меня заинтересовала техническая часть игры, я начал писать различные программы и скрипты для сервера, так я научился программировать.
  16. Also your password for MSSQL user should be encrypted with that tool.
  17. Password generator for .cfg files Credits: insider The program encrypts MSSQL user password for server .cfg-files. Example: Fragment of GameServer.cfg: User password for MSSQL Server should be encrypted. [DB] db_ip = 127.0.0.1 db_usr = PkoDevUser db_pass = EZCpyYOZVofugqDFBZrLKw== How to use: 1. Open file passgen.ini and write to it desired password. The password length must be equal to 9 characters. For example let's take standard password Y87dc#$98: pass=Y87dc#$98 2. Run passgen.exe. Then you will see encrypted password in the console (see picture above); 3. To copy encrypted password to clipboard do right click on window, in context menu select "Edit", then "Select all" and press Enter button. EZCpyYOZVofugqDFBZrLKw== That's all! Download (469 KB)
  18. V3ct0r

    GM Command editor

    You can help me if you tell me all addresses for GM commands in 2.4 GameServer.exe I will fix it soon. Quotes are not solution.
  19. Исходные файлы сервера и клиента В понедельник, 16 мая, на serverdev.net появилась тема, в которой пользователь с ником JIANJIAN продавал исходные файлы 1.36 сервера и 1.10 клиента. В отличие от остальных похожих тем о продаже исходников, автор далее привел вполне достоверные доказательства их подлинности . Позже тема была удалена администрацией форума (@Zankza), которая объясняет это тем, что "данный человек скорее всего обманщик". После этого, JIANJIAN начал спамить сообщениями о продаже исходных файлов в каждой теме, где пользователи serverdev'a продавали те или иные файлы: Все эти сообщения также были удалены, а их автор был не то чтобы забанен, а вообще удален с serverdev.net. Что это за человек, откуда у него исходные файлы и действительно ли эти файлы подлинны - неизвестно. Я попытался связаться с ним через систему личных сообщений форума serverdev, но его ЛС был закрыт, что странно. Можно догадаться что он скорее всего из Китая. Возможно, он бывший сотрудник Моли (компания-разработчик нашей игры), а может быть он нашел эти исходники в шаре в Китайском сегменте Интернета. Тем не менее, он оставил свой адрес электронной почты (QQ — наиболее распространённый в Китае сервис мгновенного обмена сообщениями): Также он выложил исходные файлы TradeServer.exe и некоторых вспомогательных утилит для Visual Studio 2003. Скачать (Server.7z). Ну и на последок, видео, в котором он показывает как скомпилировать клиент в Visual Studio 2013. Лично у меня оно не работает, а у кого-то работает, но медленно. http://www.56.com/u35/v_MTQwOTYwNjI0.html Итак, что Вы думаете по этому поводу, друзья? Это не первая тема о продаже исходных файлов. Например, я видел как кто-то продавал дамп кода клиента из IDA Pro в виде .c-файлов, называя это исходниками.
  20. Topic is moved to special section "Shared Projects / Team search".
  21. V3ct0r

    Game server

    Maybe in this GameServer database or some table/field names are changed.
  22. Как будет время гляну в чем проблема. Такой баг наблюдается на 1.38 GameServer.exe
×
×
  • Create New...