- Katılım
- 13 Haz 2013
- Konular
- 181
- Mesajlar
- 2,492
- Online süresi
- 3ay 19g
- Reaksiyon Skoru
- 1,647
- Altın Konu
- 2
- Başarım Puanı
- 284
- Yaş
- 28
- TM Yaşı
- 12 Yıl 10 Ay 13 Gün
- MmoLira
- 8,240
- DevLira
- 81
Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!
Selam, mob_proto'da eksik eklenmelerden kaynaklanan bineğin folder kısmının boş bırakılan yerlerini tamamlamanıza yardımcı olacak bir script.
@Koray' UTF-8 convert için teşekkürler.
mount_with_folder.txt dosyasından tamamlamanız gereken vnumların dosyaları mevcut.
Bu çıktı üzerinden eksikleri tamamlayabilirsiniz.
@Koray' UTF-8 convert için teşekkürler.
Python:
import os
import chardet
ITEM_PROTO_PATH = "item_proto.txt"
MOB_PROTO_PATH = "mob_proto.txt"
NPC_LIST_PATH = "npclist.txt"
LOG_FILE_PATH = "no_folder_mounts.txt"
MOB_NAMES_FILE_PATH = "mob_names.txt"
MOUNT_WITH_FOLDERS = "mount_with_folders.txt"
SERVER_DATA_FOLDER = "C:\\git\\CarbonSFv2\\server\\srv1\\share\\data\\monster"
SERVER_MISSING_FOLDERS = "server_missing_folders.txt"
MOUNT_TYPE = "ITEM_COSTUME"
MOUNT_SUBTYPE = "COSTUME_MOUNT"
MOUNT_LIST = []
MOUNT_WITH_NO_FOLDER = []
ITEM_TYPE = 2
ITEM_SUBTYPE = 3
ITEM_MOUNT_VALUE = 28
MOB_PROTO_MOUNT_VNUM = 0
MOB_PROTO_FOLDER_INDEX = 12
def process_file(file_path):
with open(file_path, 'rb') as file:
rawdata = file.read()
encoding = chardet.detect(rawdata)['encoding']
#convert to utf-8 if not already
if encoding and encoding.lower() != 'utf-8':
with open(file_path, 'r', encoding=encoding) as file:
content = file.read()
with open(file_path, 'w', encoding='utf-8') as file:
file.write(content)
def checkCostumeMount(file_path):
with open(file_path, 'r') as file:
for line in file:
if not line.strip():
continue
split = line.split('\t')
try:
if split[ITEM_TYPE] == MOUNT_TYPE and split[ITEM_SUBTYPE] == MOUNT_SUBTYPE:
MOUNT_LIST.append(split[ITEM_MOUNT_VALUE])
except IndexError:
print("Index Error on line: " + line)
def checkMobLine(file_path):
process_file(file_path)
with open(file_path, 'r', encoding='utf-8') as file:
try:
for line in file:
if not line.strip():
continue
split = line.split('\t')
try:
if split[MOB_PROTO_MOUNT_VNUM] in MOUNT_LIST and split[MOB_PROTO_FOLDER_INDEX] == "":
print("Mount with no folder: " + split[MOB_PROTO_MOUNT_VNUM])
MOUNT_WITH_NO_FOLDER.append(split[MOB_PROTO_MOUNT_VNUM])
except IndexError:
print("Index Error on line: " + line)
except UnicodeDecodeError:
print("UnicodeDecodeError on line: " + line)
def writeIntoFile(file_path, log_file_path):
logFile = open(log_file_path, 'w')
with open(file_path, 'r') as file:
for line in file:
if not line.strip():
continue
split = line.split('\t')
try:
if split[0] in MOUNT_WITH_NO_FOLDER:
logFile.write(line)
except IndexError:
print("Index Error on line: " + line)
logFile.close()
def setFolder(file_path):
mountWithFolders = open(MOUNT_WITH_FOLDERS, 'w')
with open(file_path, 'r') as file:
for line in file:
if not line.strip():
continue
split = line.split('\t')
try:
if split[0] in MOUNT_WITH_NO_FOLDER:
mountWithFolders.write(line)
except IndexError:
print("Index Error on line: " + line)
mountWithFolders.close()
def checkFolderExist(folder_path):
serverMissingFolders = open(SERVER_MISSING_FOLDERS, 'w')
with open(MOUNT_WITH_FOLDERS, 'r') as file:
for line in file:
if not line.strip():
continue
split = line.split('\t')
folder = os.path.join(folder_path, split[1])
if not os.path.exists(folder):
serverMissingFolders.write(folder + "\n")
else:
print("Folder exists: " + folder)
serverMissingFolders.close()
def main():
checkCostumeMount(ITEM_PROTO_PATH)
checkMobLine(MOB_PROTO_PATH)
writeIntoFile(MOB_NAMES_FILE_PATH, LOG_FILE_PATH)
setFolder(NPC_LIST_PATH)
checkFolderExist(SERVER_DATA_FOLDER)
if __name__ == "__main__":
main()
Tutorial:
main.py içerisindeki
Bu kısımları değerleri kendinize göre ayarlayın.
Örn item_proto:
0->Vnum
1->locale_name
2->type
Mount'un mob vnumunu value'den alıyorsa kaçıncı column'da olduğuna bakın ve ITEM_MOUNT_VALUE ile değiştirin.
chardet paketini yükleyin.
Dosyanın içeriğini bu şekilde ayarlayın.
Dosyayı bu şekilde ayarladıktan sonra;
Python ile scripti çalıştırın.
main.py içerisindeki
Python:
ITEM_TYPE = 2
ITEM_SUBTYPE = 3
ITEM_MOUNT_VALUE = 28
MOB_PROTO_MOUNT_VNUM = 0
MOB_PROTO_FOLDER_INDEX = 12
Bu kısımları değerleri kendinize göre ayarlayın.
Örn item_proto:
0->Vnum
1->locale_name
2->type
Mount'un mob vnumunu value'den alıyorsa kaçıncı column'da olduğuna bakın ve ITEM_MOUNT_VALUE ile değiştirin.
chardet paketini yükleyin.
Kod:
pip install chardet
Dosyayı bu şekilde ayarladıktan sonra;
Python ile scripti çalıştırın.
Kod:
python .\main.py
mount_with_folder.txt dosyasından tamamlamanız gereken vnumların dosyaları mevcut.
Bu çıktı üzerinden eksikleri tamamlayabilirsiniz.
En Çok Reaksiyon Alan Mesajlar
Paylaşım için teşekkürler.
- Katılım
- 27 Şub 2021
- Konular
- 707
- Mesajlar
- 4,783
- Online süresi
- 1y 1ay
- Reaksiyon Skoru
- 2,824
- Altın Konu
- 26
- Başarım Puanı
- 324
- TM Yaşı
- 5 Yıl 1 Ay 22 Gün
- MmoLira
- 897
- DevLira
- 6
Paylaşım için teşekkürler.
- Katılım
- 3 Eki 2017
- Konular
- 1,676
- Mesajlar
- 18,445
- Online süresi
- 9ay 24g
- Reaksiyon Skoru
- 8,719
- Altın Konu
- 297
- Başarım Puanı
- 374
- TM Yaşı
- 8 Yıl 6 Ay 20 Gün
- MmoLira
- 41,544
- DevLira
- 753
Paylaşım için teşekkürler.
Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)
Benzer konular
- Cevaplar
- 6
- Görüntüleme
- 1K
- Cevaplar
- 1
- Görüntüleme
- 336
- Cevaplar
- 19
- Görüntüleme
- 2K
- Cevaplar
- 11
- Görüntüleme
- 370






