Jump to content
Sultan

Buildings and Models disappear

Recommended Posts

Hello,

 

I have a problem as you can see people


-NPCs, Models, Character models, etc disappear... 


I am not using Swings,

 

Does anyone have a solution or idea?

 

What have I tried:

-I tried deleting almost all model/effect and still error occurs

-I tried using old sceneeffectinfo and same problem

 

Does it have to be to the "current" online players? or something that client get buggy?

 

image.png.1f27c6b4fd5fd51b31d4e98ac14d0c16.png

Edited by Sultan

Share this post


Link to post
Share on other sites

I also tried doing that (forgot to mention), still no fix. V3ctor's swing bug fix tool deletes the unused models in effects (which I deleted all of them and still problem exists)...

 

and no, I do not use Swing's models nor I have them in my Client.

Share this post


Link to post
Share on other sites

@Sultan, did you use the map editor on this map?

If yes, then i dissapoint you, edit the map only with an official game client (IGG, etc).

Modified map editors lead to such consequences.

Edited by aleksandr

Share this post


Link to post
Share on other sites
On 9/10/2018 at 10:19 PM, aleksandr said:

@Sultan, did you use the map editor on this map?

If yes, then i dissapoint you, edit the map only with an official game client (IGG, etc).

Modified map editors lead to such consequences.

it happen because of the amount of objects does not matter what kind of map i think max objects in certain area when your Char move on like 100 object or something of the sort!
@Sultan

your problem properly because of your Graphic Driver or the objects were deleted (exceed number of obj in map)

Edited by Fisal Moha

Share this post


Link to post
Share on other sites

I experienced something like this when i was trying new lgo model (could be apparel model, buildings...)

So some models that you added into your client could be the problem, thing is finding which ones. you could re-do your client using a clean one and add what you had before slowly

Share this post


Link to post
Share on other sites
On 5/11/2020 at 8:40 PM, d3ux said:

I experienced something like this when i was trying new lgo model (could be apparel model, buildings...)

So some models that you added into your client could be the problem, thing is finding which ones. you could re-do your client using a clean one and add what you had before slowly

I think I have found the issue. It seems its from model/character/ and model/effect

The only problem now is I don't know which file(s) are bugged. Uhhh it's gonna be rough to find em... Is there anyone solved this problem can kindly help me out?

Edited by Sultan

Share this post


Link to post
Share on other sites

I believe Vector has figured the issue was being in the unused models, an easy fix (considering that it is the problem), would be to implement a script to remove files that are not used within the client.

Edited by patrick13

Share this post


Link to post
Share on other sites
22 hours ago, patrick13 said:

I believe Vector has figured the issue was being in the unused models, an easy fix (considering that it is the problem), would be to implement a script to remove files that are not used within the client.

Who would have such fix? I tried V3ctors one it's not suitable as it deletes "all" effect models only.

Share this post


Link to post
Share on other sites
1 minute ago, Sultan said:

Who would have such fix? I tried V3ctors one it's not suitable as it deletes "all" effect models only.

I can make one, will have a look later.

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Hello @Sultan and @patrick13!

 

Maybe the source code of my program will help you:

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <stdexcept>
#include <cstdio>
#include <Windows.h>
#include "Shlwapi.h"


// Напечатать приветственное сообщение
void Welcome();

// Получить директорию, в которой находится программа
std::string GetBaseDir();

// Прочитать .bin файл
void ReadBinaryFile(const std::string& path,
					std::vector<std::string>& list);

// Получить список файлов в директории
void GetFilesInDir(const std::string& path, 
					std::vector<std::string>& list);

// Получить название файла без расширения
std::string ExtractFileName(const std::string& name);

// Проверить, что программа находится в корневой папке с игрой
bool CheckClient(const std::string& base_path);

// Точка входа
int main(int argc, char *argv[])
{
	// Список файлов моделей в sceneeffectinfo.bin
	std::vector<std::string> models;

	// Список файлов в директории Client\model\effect
	std::vector<std::string> client_models;

	// Базовый путь
	std::string base_path = GetBaseDir();

	// Печатаем привественное сообщение
	Welcome();

	
	// Проверим, что программа находится в папке с игрой
	if (!CheckClient(base_path))
	{
		std::cout << "[error] Please place the program in the root directory of the game client!" << std::endl << std::endl;
		system("PAUSE");
		return 0;
	}

	// Читаем .bin файлы
	try
	{
		ReadBinaryFile(base_path + "\\scripts\\table\\sceneffectinfo.bin", models);
	}
	catch (const std::runtime_error& e) {
		std::cout << "[error] " << e.what() << std::endl;
	}
	catch (...) {
		std::cout << "[error] Unknown error!" << std::endl;
	}

	// Получаем список файлов в клиенте
	GetFilesInDir(base_path + "\\model\\effect\\", client_models);


	// Ищем файлы, которые можно удалить
	unsigned int n = 0;
	for (unsigned int i = 0; i < client_models.size(); i++)
	{
		auto it = std::find(models.begin(), models.end(), client_models[i]);
		
		if (it == models.end()) {

			std::string file_path = base_path + "\\model\\effect\\" + client_models[i] + ".lgo";
			if (remove(file_path.c_str())) {
				std::cout << "[error] Can't remove model: " << client_models[i] << std::endl;
			}
			else {
				std::cout << "[ok] Model removed: " << client_models[i] << std::endl;
				n++;
			}
		}
	}

	std::cout << n << " files removed!" << std::endl;

	system("PAUSE");
    return 0;
}

// Напечатать приветственное сообщение
void Welcome()
{
	std::cout << "Swings Fixer by V3ct0r from PkoDEV.NET" << std::endl;
	std::cout << "Version 1.0 (05.05.2018)" << std::endl << std::endl;
}

// Получить директорию, в которой находится программа
std::string GetBaseDir()
{
	TCHAR path[MAX_PATH];
	GetModuleFileName(NULL, path, MAX_PATH);
	PathRemoveFileSpec(path);

	return std::string(path);
}

// Прочитать .bin файл
void ReadBinaryFile(const std::string& path,
							std::vector<std::string>& list)
{
	std::cout << "Reading file: " << path << " . . . " << std::endl;

	// Открываем файл
	std::ifstream file(path, std::ios::binary);
	if (file.is_open() == false) {
		throw std::runtime_error("Can't open file " + path + "!");
	}

	// Получим размер файла
	size_t file_size = 0;
	file.seekg(0, file.end);
	file_size = static_cast<size_t>(file.tellg());
	file.seekg(0, file.beg);

	// Выделяем память под файл
	char *file_mem = nullptr;
	try {
		file_mem = new char[file_size];
	}
	catch (const std::bad_alloc&) {
		throw std::runtime_error("Can't allocate memory for file " + path + "!");
	}

	// Читаем файл в память
	file.read(file_mem, file_size);
	if (file.gcount() != file_size) {
		delete[] file_mem;
		throw std::runtime_error("Error while reading file " + path + "!");
	}

	// Закрываем файл
	file.close();


	// Получаем размер блока
	unsigned int block_size = 0;
	std::memcpy(reinterpret_cast<char *>(&block_size), file_mem, sizeof(block_size));

	// Определяем количество файлов
	unsigned int n = (file_size - sizeof(block_size)) / block_size;

	// Читаем файлы
	char name[72];
	std::memset(name, 0x00, sizeof(name));
	for (unsigned int i = 0; i < n; i++)
	{
		unsigned int offset = sizeof(block_size) + 8 + i * block_size;
		std::memcpy(name, file_mem + offset, sizeof(name));

		list.push_back(ExtractFileName(name));
	}

	// Освобождаем память
	delete[] file_mem;

	std::cout << n << " objects read!" << std::endl;
}

// Получить список файлов в директории
void GetFilesInDir(const std::string& path,
						std::vector<std::string>& list)
{
	std::cout << "Reading directory: " << path << " . . . " << std::endl;

	WIN32_FIND_DATA fd;
	HANDLE hFind = ::FindFirstFile((path + "*.*").c_str(), &fd);
	unsigned int n = 0;

	if (hFind != INVALID_HANDLE_VALUE)
	{
		do 
		{
			if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
			{

			}
			else
			{
				list.push_back(ExtractFileName(fd.cFileName));
				n++;
			}
		} 
		while(::FindNextFile(hFind, &fd));
		::FindClose(hFind);
	}

	std::cout << n << " files found! " << std::endl;
}

// Получить название файла без расширения
std::string ExtractFileName(const std::string& name)
{
	size_t pos = name.find_last_of('.');
	return name.substr(0, pos);
}

// Проверить, что программа находится в корневой папке с игрой
bool CheckClient(const std::string& base_path)
{
	bool ok = false;
	std::ifstream file(base_path + "\\system\\MindPower3D_D8R.dll");
	if (file.is_open()) {
		ok = true;
		file.close();
	}

	return ok;
}

 

  • Thanks 1

Share this post


Link to post
Share on other sites

Apologize for reviving this very old topic but I noticed something regarding this topic, maybe gonna help the community or maybe towards a fix for this problem....

 

Using a custom map (as a main map) will cause this issue, this what I've figured out. I've been working on TOP/PKO development for the past month and I have wanted to try out one of Alias maps released to use a main-town, while adding the main-town I noticed most of the objects disappeared.

 

I assume the main reason is the custom maps itself, I have been working on my test server in all three main maps (argent, shaitan, icicle) and I didn't notice anything disappears at all.

 

Thanks.

  • Thanks 1

Share this post


Link to post
Share on other sites
On 5/17/2022 at 11:21 AM, Sultan said:

Apologize for reviving this very old topic but I noticed something regarding this topic, maybe gonna help the community or maybe towards a fix for this problem....

 

Using a custom map (as a main map) will cause this issue, this what I've figured out. I've been working on TOP/PKO development for the past month and I have wanted to try out one of Alias maps released to use a main-town, while adding the main-town I noticed most of the objects disappeared.

 

I assume the main reason is the custom maps itself, I have been working on my test server in all three main maps (argent, shaitan, icicle) and I didn't notice anything disappears at all.

 

Thanks.

Hello @Sultan,

 

What are the sizes of the custom map? (in game sizes (examples: 4096 x 4096, 128 x 256) and size on disk in bytes)

How was the map made? With YAMMI? 


Share this post


Link to post
Share on other sites
On 5/18/2022 at 5:03 PM, V3ct0r said:

Hello @Sultan,

 

What are the sizes of the custom map? (in game sizes (examples: 4096 x 4096, 128 x 256) and size on disk in bytes)

How was the map made? With YAMMI? 

Hello @V3ct0r,

 

1. I don't really know the map size exactly but I don't think it's big sized map. I'll have to check on that when I get back home.

2. Yes, it was made by YAMMI and map-editor in client for the objects.

Share this post


Link to post
Share on other sites
On 9/10/2018 at 5:19 PM, aleksandr said:

@Sultan, did you use the map editor on this map?

If yes, then i dissapoint you, edit the map only with an official game client (IGG, etc).

Modified map editors lead to such consequences.


I guess you can try that, but the only thing is that to replicate and test the error you will have to re-do and edit the map using the normal game editor without any modification.


Which map are you trying to use?

 

Share this post


Link to post
Share on other sites

Share this post


Link to post
Share on other sites
On 5/17/2022 at 10:21 AM, Sultan said:

Apologize for reviving this very old topic but I noticed something regarding this topic, maybe gonna help the community or maybe towards a fix for this problem....

 

Using a custom map (as a main map) will cause this issue, this what I've figured out. I've been working on TOP/PKO development for the past month and I have wanted to try out one of Alias maps released to use a main-town, while adding the main-town I noticed most of the objects disappeared.

 

I assume the main reason is the custom maps itself, I have been working on my test server in all three main maps (argent, shaitan, icicle) and I didn't notice anything disappears at all.

 

Thanks.

As some of the replies mentioned, the issue is related to the buffer holding the data related to the objects, all u gotta do is removing  all the objects that aren't being used from the client, the map doesn't really have to be small as long as the objects loaded are minimal (exculding unnecessary/unused models), rendering the same object mutiple times in a map, doesn't really produce an issue, I put like half of the swing's models before in a client and it was working fine until I started adding more models

Share this post


Link to post
Share on other sites

I think removing objects is a bad solution, logically it would make size to increase buffer size to get rid of buffer overflow @Over Dramatic

Not sure if it matters but I am also pretty certain Alias’ map sizes were never even (she would alter the size in the end and increase it by 1, for instance from 4096x4096 to 4097x4097) - it’s a shot in the dark, really, but could perhaps be a problem?

Share this post


Link to post
Share on other sites
5 hours ago, champ said:

I think removing objects is a bad solution, logically it would make size to increase buffer size to get rid of buffer overflow @Over Dramatic

Not sure if it matters but I am also pretty certain Alias’ map sizes were never even (she would alter the size in the end and increase it by 1, for instance from 4096x4096 to 4097x4097) - it’s a shot in the dark, really, but could perhaps be a problem?

Well not so sure, but regarding the models that's the only solution for the already compiler exes

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...