Bvural41 1
Bvural41
-TuRKuaZ- 1
-TuRKuaZ-
farkmt2official 1
farkmt2official
Sevdamsın 1
Sevdamsın
mavzermete 1
mavzermete
xranzei 1
xranzei
Hikaye Ekle

Proto Benzeri data dosyalarını düzenli tutmaca. Author:Chat GPT

  • Konuyu başlatan Konuyu başlatan OwnerShip
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 2
  • Görüntüleme Görüntüleme 610

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Kullanmak isteyen elbet olur
-Protoları vnuma göre sıralar(item_list.txt ve npclist.txt dahil)
-Birden fazla kez kullanılanları log eder
-Kullanılmayan boştaki item_proto vnum aralıklarını aşağıdaki gibi sıralar
1726090580312.png

Tek yapmanız gereken item_list.txt,npclist.txt,item_proto.txt,item_names.txt,mob_proto.txt,mob_names.txt dosyalarını bir klasöre bu exe ile atıp exeyi çalıştırmak
VirüsTotal virüs bulmuş fakat ben kaynak kodunuda paylaşayım virüs yok içinde istiyen derleyip kullansın​
[CODE lang="cpp" title="c++"]#include <iostream>
#include <fstream>
#include <ma#includeude <vector#includede <str#includeclude <sst#includenclude <al#include

using nam#includetd;

// Bir satırı VNUM'a göre ayıran yardımcı fonksiyon
int getVnumFromLine(const string& line) {
stringstream ss(line);
int vnum;
ss >> vnum; // Satırın başındaki ilk sayıyı VNUM olarak alır
return vnum;
}

// Sadece boşluk veya özel karakterlerden oluşan satırları kontrol et
bool isWhitespaceOrSpecialCharsOnly(const string& line) {
for (char c : line) {
if (isalnum(c)) {
return false; // Eğer satırda harf veya rakam varsa boş veya geçersiz değil
}
}
return true; // Eğer sadece boşluk veya özel karakterler varsa bu satırı geçersiz kabul et
}

// Dosyayı VNUM'a göre sıralayan fonksiyon
void sortFileByVnum(const string& filename) {
ifstream infile(filename);
vector<pair<int, string>> linesWithVnum;
string line;

// Dosyayı satır satır oku ve VNUM'ları al
while (getline(infile, line)) {
if (line.empty() || isWhitespaceOrSpecialCharsOnly(line)) {
continue; // Boş veya sadece özel karakterler içeren satırları atla
}
int vnum = getVnumFromLine(line);
linesWithVnum.push_back({ vnum, line });
}

infile.close();

// VNUM'lara göre sıralama yap
sort(linesWithVnum.begin(), linesWithVnum.end());

// Sıralanmış satırları dosyaya tekrar yaz
ofstream outfile(filename);
for (const auto& entry : linesWithVnum) {
outfile << entry.second << endl;
}

outfile.close();
}
// Dosyadan verileri oku ve VNUM'ları kaydet
void readVnums(const string& filename, map<int, int>& vnumCounter) {
ifstream infile(filename);
string line;

while (getline(infile, line)) {
stringstream ss(line);
int vnum;
ss >> vnum;
printf("Check Vnum: %d \n", vnum);

vnumCounter[vnum]++;
}
}

// Kullanılmayan VNUM aralıklarını tespit et
void findUnusedVnums(const map<int, int>& vnumCounter, vector<pair<int, int>>& unusedRanges, int minVnum, int maxVnum) {
int start = -1;
for (int i = minVnum; i <= maxVnum; i++) {
if (vnumCounter.find(i) == vnumCounter.end()) {
if (start == -1) {
start = i;
}
}
else {
if (start != -1) {
unusedRanges.push_back({ start, i - 1 });
start = -1;
}
}
}
if (start != -1) {
unusedRanges.push_back({ start, maxVnum });
}
}

// Kullanılmayan VNUM'ları dosyaya yaz
void writeUnusedVnums(const string& filename, const vector<pair<int, int>>& unusedRanges) {
ofstream outfile(filename);
for (const auto& range : unusedRanges) {
outfile << range.first << "~" << range.second << endl;
}
}

// Birden fazla kez kullanılan VNUM'ları dosyaya yaz
void writeDuplicateVnums(const string& filename, const map<int, int>& vnumCounter) {
ofstream outfile(filename);
for (const auto& entry : vnumCounter) {
if (entry.second > 1) {
outfile << entry.first << endl;
printf("Detectid Vnum: %d \n", entry.first);

}
}
}

int main() {
map<int, int> vnumCounter;
string inputFilename = "item_proto.txt";

// Veriyi oku
readVnums(inputFilename, vnumCounter);

// Kullanılmayan ve birden fazla kullanılan VNUM'ları analiz et
vector<pair<int, int>> unusedRanges;
int minVnum = 10, maxVnum = 9000000;
findUnusedVnums(vnumCounter, unusedRanges, minVnum, maxVnum);

// Kullanılmayan ve birden çok kullanılan VNUM'ları dosyalara yaz
writeUnusedVnums("kullanilmayan_vnumlar.txt", unusedRanges);
writeDuplicateVnums("birdencokkullanilan_vnumlar.txt", vnumCounter);
sortFileByVnum("item_list.txt");
sortFileByVnum("npclist.txt");
sortFileByVnum("mob_proto.txt");
sortFileByVnum("item_proto.txt");
sortFileByVnum("mob_names.txt");
sortFileByVnum("item_names.txt");

cout << "İşlem tamamlandı." << endl;
return 0;
}
[/CODE]



 
naçizane bu tarz scriptleri python ile yazdırın zira chatgpt c++ konusunda bence kötü ek olarak derleme vs zahmeti oluyor
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst