fix and add
22
__init__.py
@ -3,7 +3,7 @@ import re
|
||||
#from nonebot import on_command
|
||||
#from nonebot.adapters.cqhttp import Event, Bot, Message
|
||||
|
||||
from .getImg import draw_pic
|
||||
from .getImg import draw_pic,draw_char_pic
|
||||
|
||||
from nonebot import *
|
||||
import json
|
||||
@ -37,9 +37,17 @@ Texture_PATH = os.path.join(FILE2_PATH,'texture2d')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
image = re.search(r"\[CQ:image,file=(.*),url=(.*)\]", str(ev.message))
|
||||
message = ev.message.extract_plain_text()
|
||||
try:
|
||||
uid = re.findall(r"\d+", message)[0] # str
|
||||
im = await draw_pic(uid,ev.sender['nickname'],image)
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
except:
|
||||
await bot.send(ev,'输入错误!')
|
||||
uid = re.findall(r"\d+", message)[0] # str
|
||||
m = ''.join(re.findall('[\u4e00-\u9fa5]',message))
|
||||
if m == "角色":
|
||||
try:
|
||||
im = await draw_char_pic(uid,ev.sender['nickname'],image)
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
except:
|
||||
await bot.send(ev,'输入也许错误!')
|
||||
else:
|
||||
try:
|
||||
im = await draw_pic(uid,ev.sender['nickname'],image)
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
except:
|
||||
await bot.send(ev,'输入错误!')
|
||||
|
13
getData.py
@ -31,6 +31,7 @@ mhyVersion = "2.7.0"
|
||||
|
||||
|
||||
def cache_Cookie():
|
||||
cookie_list = ['']#在这里输入cookies
|
||||
return random.choice(cookie_list)
|
||||
|
||||
|
||||
@ -65,7 +66,7 @@ async def GetInfo(Uid, ServerID="cn_gf01",Schedule_type="1"):
|
||||
'Accept-Encoding': 'gzip, deflate',
|
||||
'Accept-Language': 'zh-CN,en-US;q=0.8',
|
||||
'X-Requested-With': 'com.mihoyo.hyperion',
|
||||
"Cookie": ''})
|
||||
"Cookie": cache_Cookie()})
|
||||
data1 = json.loads(req.text)
|
||||
async with AsyncClient() as client:
|
||||
req = await client.get(
|
||||
@ -74,7 +75,7 @@ async def GetInfo(Uid, ServerID="cn_gf01",Schedule_type="1"):
|
||||
'Accept': 'application/json, text/plain, */*',
|
||||
'DS': DSGet(),
|
||||
'Origin': 'https://webstatic.mihoyo.com',
|
||||
'Cookie': '',#自己获取
|
||||
'Cookie': cache_Cookie(),
|
||||
'x-rpc-app_version': mhyVersion,
|
||||
'User-Agent': 'Mozilla/5.0 (Linux; Android 9; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 miHoYoBBS/2.2.0',
|
||||
'x-rpc-client_type': '2',
|
||||
@ -86,7 +87,6 @@ async def GetInfo(Uid, ServerID="cn_gf01",Schedule_type="1"):
|
||||
)
|
||||
data2 = json.loads(req.text)
|
||||
data = data1
|
||||
#data3 = data1 + data2
|
||||
#f=open("/root/hoshino/HoshinoBot/hoshino/modules/GenshinUID/mys/chars/666.txt",'w')
|
||||
#f.write(str(data))
|
||||
return data
|
||||
@ -95,8 +95,7 @@ async def GetInfo(Uid, ServerID="cn_gf01",Schedule_type="1"):
|
||||
print("访问失败,请重试!")
|
||||
sys.exit(1)
|
||||
|
||||
def GetCharacter(Uid,Character_ids, ServerID="cn_gf01"):
|
||||
print("8")
|
||||
async def GetCharacter(Uid,Character_ids, ServerID="cn_gf01"):
|
||||
if Uid[0] == '5':
|
||||
ServerID = "cn_qd01"
|
||||
try:
|
||||
@ -106,7 +105,7 @@ def GetCharacter(Uid,Character_ids, ServerID="cn_gf01"):
|
||||
'Accept': 'application/json, text/plain, */*',
|
||||
'DS': DSGet(),
|
||||
'Origin': 'https://webstatic.mihoyo.com',
|
||||
'Cookie': '',#自己获取
|
||||
'Cookie': cache_Cookie(),
|
||||
'x-rpc-app_version': mhyVersion,
|
||||
'User-Agent': 'Mozilla/5.0 (Linux; Android 9; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 miHoYoBBS/2.2.0',
|
||||
'x-rpc-client_type': '2',
|
||||
@ -118,7 +117,7 @@ def GetCharacter(Uid,Character_ids, ServerID="cn_gf01"):
|
||||
json = {"character_ids": Character_ids ,"role_id": Uid ,"server": ServerID }
|
||||
)
|
||||
data2 = json.loads(req.text)
|
||||
#f=open("/root/hoshino/HoshinoBot/hoshino/modules/Genshin/mys/chars/555.txt",'w')
|
||||
#f=open("/root/hoshino/HoshinoBot/hoshino/modules/GenshinUID/mys/chars/555.txt",'w')
|
||||
#f.write(str(data2))
|
||||
return data2
|
||||
|
||||
|
190
getImg.py
@ -10,17 +10,20 @@ from PIL import Image, ImageDraw, ImageFont, ImageFilter
|
||||
from .getData import GetInfo,GetCharacter
|
||||
|
||||
import os
|
||||
import json
|
||||
import random
|
||||
|
||||
FILE_PATH = os.path.dirname(__file__)
|
||||
FILE2_PATH = os.path.join(FILE_PATH,'mys')
|
||||
CHAR_PATH = os.path.join(FILE2_PATH,'chars')
|
||||
CHAR_WEAPON_PATH = os.path.join(FILE2_PATH,'char_weapon')
|
||||
TEXT_PATH = os.path.join(FILE2_PATH,'texture2d')
|
||||
WEAPON_PATH = os.path.join(FILE2_PATH,'weapon')
|
||||
|
||||
def ys_font(size):
|
||||
return ImageFont.truetype(os.path.join(FILE2_PATH,"yuanshen.ttf"), size=size)
|
||||
|
||||
async def draw_pic(uid,nickname,image = None):
|
||||
|
||||
is_edit = False
|
||||
if image != None:
|
||||
image_file= image.group(1)
|
||||
@ -33,16 +36,21 @@ async def draw_pic(uid,nickname,image = None):
|
||||
if (raw_data["retcode"] != 0):
|
||||
if (raw_data["retcode"] == 10001):
|
||||
return ("Cookie错误/过期,请重置Cookie")
|
||||
if (raw_data["retcode"] == 10101):
|
||||
return ("当前cookies已达到30人上限!")
|
||||
if (raw_data["retcode"] == 10102):
|
||||
return ("当前查询id已经设置了隐私,无法查询!")
|
||||
return (
|
||||
"Api报错,返回内容为:\r\n"
|
||||
+ str(raw_data) + "\r\n出现这种情况可能的UID输入错误 or 不存在"
|
||||
"Api报错,返回内容为:\r\n"
|
||||
+ str(raw_data) + "\r\n出现这种情况可能的UID输入错误 or 不存在"
|
||||
)
|
||||
else:
|
||||
pass
|
||||
|
||||
bg_list = ['bg_img_1.png','bg_img_2.png','bg_img_3.png']
|
||||
bg_path = os.path.join(TEXT_PATH,"bg.png")
|
||||
bg2_path = os.path.join(TEXT_PATH,"bg_img.png")
|
||||
fg_path = os.path.join(TEXT_PATH,"fg_img.png")
|
||||
bg2_path = os.path.join(TEXT_PATH,random.choice(bg_list))
|
||||
fg_path = os.path.join(TEXT_PATH,"fg_img_1.png")
|
||||
mask_path = os.path.join(TEXT_PATH,"mask_img.png")
|
||||
|
||||
if is_edit == True:
|
||||
@ -85,10 +93,10 @@ async def draw_pic(uid,nickname,image = None):
|
||||
|
||||
index_char = ["神里绫华","琴","迪卢克","温迪","魈","可莉","钟离","达达利亚","七七","甘雨","阿贝多","莫娜","刻晴","胡桃","枫原万叶","优菈","丽莎","芭芭拉","凯亚","雷泽","安柏","香菱","北斗","行秋","凝光","菲谢尔","班尼特","诺艾尔","重云","迪奥娜","砂糖","辛焱","罗莎莉亚","烟绯","旅行者"]
|
||||
|
||||
five_star_char = ["神里绫华","琴","迪卢克","温迪","魈","可莉","钟离","达达利亚","七七","甘雨","阿贝多","莫娜","刻晴","胡桃","枫原万叶","优菈"]
|
||||
four_star_char = ["丽莎","芭芭拉","凯亚","雷泽","安柏","香菱","北斗","行秋","凝光","菲谢尔","班尼特","诺艾尔","重云","迪奥娜","砂糖","辛焱","罗莎莉亚","烟绯","旅行者"]
|
||||
five_star_char = ["神里绫华","琴","迪卢克","温迪","魈","可莉","钟离","达达利亚","七七","甘雨","阿贝多","莫娜","刻晴","胡桃","枫原万叶","优菈","宵宫"]
|
||||
four_star_char = ["丽莎","芭芭拉","凯亚","雷泽","安柏","香菱","北斗","行秋","凝光","菲谢尔","班尼特","诺艾尔","重云","迪奥娜","砂糖","辛焱","罗莎莉亚","烟绯","早柚"]
|
||||
|
||||
for k in raw_data['avatars']:
|
||||
for k in char_data:
|
||||
if k['name'] in five_star_char:
|
||||
k['star'] = 5
|
||||
if k['name'] in four_star_char:
|
||||
@ -146,12 +154,12 @@ async def draw_pic(uid,nickname,image = None):
|
||||
char = os.path.join(CHAR_PATH,str(char_data[num]['id']) + ".png")
|
||||
char_img = Image.open(char)
|
||||
char_draw = ImageDraw.Draw(char_img)
|
||||
char_draw.text((38.6,108),f'Lv.{str(char_data[num]["level"])}',(21,21,21),ys_font(18))
|
||||
char_draw.text((97,19),f'{str(char_data[num]["actived_constellation_num"])}','white',ys_font(18))
|
||||
char_draw.text((40,108),f'Lv.{str(char_data[num]["level"])}',(21,21,21),ys_font(18))
|
||||
char_draw.text((95.3,19),f'{str(char_data[num]["actived_constellation_num"])}','white',ys_font(18))
|
||||
if str(char_data[num]["fetter"]) == "10":
|
||||
char_draw.text((97,40),"F",(21,21,21),ys_font(17))
|
||||
char_draw.text((95.3,40.5),"F",(21,21,21),ys_font(17))
|
||||
else:
|
||||
char_draw.text((97,40),f'{str(char_data[num]["fetter"])}',(21,21,21),ys_font(18))
|
||||
char_draw.text((95.3,40.5),f'{str(char_data[num]["fetter"])}',(21,21,21),ys_font(18))
|
||||
|
||||
if num < 5:
|
||||
char_crop = (74+133*num,750)
|
||||
@ -173,6 +181,160 @@ async def draw_pic(uid,nickname,image = None):
|
||||
#return 'base64://' + b64encode(result_buffer.getvalue()).decode()
|
||||
return resultmes
|
||||
|
||||
def get_weapon_pic():
|
||||
f2 = open(os.path.join(WEAPON_PATH,"weapons.json"),"r")
|
||||
ikk = json.load(f2)
|
||||
for k in ikk:
|
||||
m = ikk[f'{k}']['icon']
|
||||
urllib.request.urlretrieve(f'{m}', os.path.join(WEAPON_PATH, m.split('/')[-1]))
|
||||
print(k)
|
||||
time.sleep(2)
|
||||
|
||||
if __name__ == '__main__':
|
||||
pass
|
||||
async def draw_char_pic(uid,nickname,image = None):
|
||||
is_edit = False
|
||||
if image != None:
|
||||
image_file= image.group(1)
|
||||
image_data = image.group(2)
|
||||
urllib.request.urlretrieve(f'{image_data}', os.path.join(TEXT_PATH,nickname + '.png'))
|
||||
is_edit = True
|
||||
|
||||
raw_data = await GetInfo(uid)
|
||||
|
||||
if (raw_data["retcode"] != 0):
|
||||
if (raw_data["retcode"] == 10001):
|
||||
return ("Cookie错误/过期,请重置Cookie")
|
||||
return (
|
||||
"Api报错,返回内容为:\r\n"
|
||||
+ str(raw_data) + "\r\n出现这种情况可能的UID输入错误 or 不存在"
|
||||
)
|
||||
else:
|
||||
pass
|
||||
|
||||
bg_list = ['bg_img_1.png','bg_img_2.png']
|
||||
bg_path = os.path.join(TEXT_PATH,"bg.png")
|
||||
bg2_path = os.path.join(TEXT_PATH,random.choice(bg_list))
|
||||
fg_path = os.path.join(TEXT_PATH,"fg_img_1.png")
|
||||
mask_path = os.path.join(TEXT_PATH,"mask_img.png")
|
||||
|
||||
if is_edit == True:
|
||||
bg_path_edit = os.path.join(TEXT_PATH,f"{nickname}.png")
|
||||
edit_bg = Image.open(bg_path_edit)
|
||||
w, h = edit_bg.size
|
||||
scale_f = w / h
|
||||
scale = '%.4f' % scale_f
|
||||
new_w = math.ceil(1200*float(scale))
|
||||
new_h = math.ceil(800/float(scale))
|
||||
if w > h:
|
||||
bg_img2 = edit_bg.resize((new_w, 1200),Image.ANTIALIAS)
|
||||
elif float(scale) > 0.66:
|
||||
bg_img2 = edit_bg.resize((new_w, 1200),Image.ANTIALIAS)
|
||||
else:
|
||||
bg_img2 = edit_bg.resize((800, new_h),Image.ANTIALIAS)
|
||||
bg_img = bg_img2.crop((0, 0, 800, 1200))
|
||||
else:
|
||||
bg_img = Image.open(bg2_path)
|
||||
|
||||
fg_img = Image.open(fg_path)
|
||||
mask_img = Image.open(mask_path)
|
||||
|
||||
#img = Image.open(bg_path)
|
||||
area = (37, 58, 764, 1142)
|
||||
img_bb = bg_img.crop(area)
|
||||
img_blur = img_bb.filter(ImageFilter.GaussianBlur(4))
|
||||
|
||||
bg_img.paste(img_blur, (37,268),mask_img)
|
||||
|
||||
bg_img.paste(fg_img,(0,0),fg_img)
|
||||
text_draw = ImageDraw.Draw(bg_img)
|
||||
|
||||
#text_draw.text((192.6,128.3), f"{nickname}", (217,217,217), ys_font(32))
|
||||
text_draw.text((297.7, 83.8), 'UID ' + f"{uid}", (245,245,245), ys_font(26))
|
||||
|
||||
|
||||
charid_data = raw_data['data']["avatars"]
|
||||
char_ids = []
|
||||
char_rawdata = []
|
||||
|
||||
for i in charid_data:
|
||||
char_ids.append(i["id"])
|
||||
|
||||
char_rawdata = await GetCharacter(uid,char_ids)
|
||||
char_data = char_rawdata["data"]["avatars"]
|
||||
|
||||
bar_5_path = os.path.join(TEXT_PATH,"jinglian_5.png")
|
||||
bar_5 = Image.open(bar_5_path)
|
||||
#bar_5.thumbnail((13, 30))
|
||||
bar_4_path = os.path.join(TEXT_PATH,"jinglian_4.png")
|
||||
bar_4 = Image.open(bar_4_path)
|
||||
#bar_4.thumbnail((13, 30))
|
||||
|
||||
num = 0
|
||||
|
||||
char_data.sort(key=lambda x: (-x['rarity'],-x['level'],-x['fetter']))
|
||||
|
||||
for i in char_data:
|
||||
char_mingzuo = 0
|
||||
for k in i['constellations']:
|
||||
if k['is_actived'] == True:
|
||||
char_mingzuo += 1
|
||||
char_id = i["id"]
|
||||
char_level = i["level"]
|
||||
char_fetter = i['fetter']
|
||||
char_rarity = i['rarity']
|
||||
|
||||
char_weapon = i['weapon']
|
||||
char_weapon_name = i['weapon']['name']
|
||||
char_weapon_level = i['weapon']['level']
|
||||
char_weapon_jinglian = i['weapon']['affix_level']
|
||||
char_weapon_icon = i['weapon']['icon']
|
||||
|
||||
|
||||
char = os.path.join(CHAR_WEAPON_PATH,str(char_id) + ".png")
|
||||
weapon = os.path.join(WEAPON_PATH, str(char_weapon_icon.split('/')[-1]))
|
||||
|
||||
char_img = Image.open(char)
|
||||
weapon_img = Image.open(weapon)
|
||||
weapon_img.thumbnail((57, 57))
|
||||
char_draw = ImageDraw.Draw(char_img)
|
||||
|
||||
char_draw.text((47,109),f'Lv.{str(char_level)}',(21,21,21),ys_font(18))
|
||||
|
||||
char_draw.text((110,19.5),f'{str(char_mingzuo)}','white',ys_font(18))
|
||||
|
||||
if str(char_data[num]["fetter"]) == "10":
|
||||
char_draw.text((110,41.5),"F",(21,21,21),ys_font(17))
|
||||
else:
|
||||
char_draw.text((110,41.5),f'{str(char_fetter)}',(21,21,21),ys_font(18))
|
||||
|
||||
char_img.paste(weapon_img,(70,52),weapon_img)
|
||||
|
||||
#if char_rarity == 4:
|
||||
# for j in range(0,char_weapon_jinglian):
|
||||
# char_img.paste(bar_4,(116,97-8*j),bar_4)
|
||||
#elif char_rarity == 5:
|
||||
# for j in range(0,char_weapon_jinglian):
|
||||
# char_img.paste(bar_5,(116,97-8*j),bar_5)
|
||||
|
||||
if char_rarity == 4:
|
||||
char_img.paste(bar_4,(110,92),bar_4)
|
||||
char_draw.text((112,91),f'{str(char_weapon_jinglian)}','black',ys_font(14))
|
||||
elif char_rarity == 5:
|
||||
char_img.paste(bar_5,(110,92),bar_5)
|
||||
char_draw.text((112,91),f'{str(char_weapon_jinglian)}','black',ys_font(14))
|
||||
|
||||
if num < 35:
|
||||
char_crop = (53+137*(num%5),181+131*(num//5))
|
||||
bg_img.paste(char_img,char_crop,char_img)
|
||||
else:
|
||||
break
|
||||
num = num+1
|
||||
|
||||
result_buffer = BytesIO()
|
||||
bg_img.save(result_buffer, format='png')
|
||||
imgmes = 'base64://' + b64encode(result_buffer.getvalue()).decode()
|
||||
resultmes = f"[CQ:image,file={imgmes}]"
|
||||
#return 'base64://' + b64encode(result_buffer.getvalue()).decode()
|
||||
return resultmes
|
||||
|
||||
async def get_char_data(uid,nickname,image = None):
|
||||
pass
|
BIN
mys/char_weapon/10000002.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
mys/char_weapon/10000003.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
mys/char_weapon/10000005.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
mys/char_weapon/10000006.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
mys/char_weapon/10000007.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
mys/char_weapon/10000014.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
mys/char_weapon/10000015.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
mys/char_weapon/10000016.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
mys/char_weapon/10000020.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
mys/char_weapon/10000021.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
mys/char_weapon/10000022.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
mys/char_weapon/10000023.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
mys/char_weapon/10000024.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
mys/char_weapon/10000025.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
mys/char_weapon/10000026.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
mys/char_weapon/10000027.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
mys/char_weapon/10000029.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
mys/char_weapon/10000030.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
mys/char_weapon/10000031.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
mys/char_weapon/10000032.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
mys/char_weapon/10000033.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
mys/char_weapon/10000034.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
mys/char_weapon/10000035.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
mys/char_weapon/10000036.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
mys/char_weapon/10000037.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
mys/char_weapon/10000038.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
mys/char_weapon/10000039.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
mys/char_weapon/10000041.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
mys/char_weapon/10000042.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
mys/char_weapon/10000043.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
mys/char_weapon/10000044.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
mys/char_weapon/10000045.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
mys/char_weapon/10000046.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
mys/char_weapon/10000047.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
mys/char_weapon/10000048.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
mys/char_weapon/10000049.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
mys/char_weapon/10000051.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
mys/char_weapon/10000053.png
Normal file
After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 32 KiB |
BIN
mys/chars/10000049.png
Normal file
After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 30 KiB |
BIN
mys/chars/10000053.png
Normal file
After Width: | Height: | Size: 31 KiB |
1
mys/chars/555.txt
Normal file
1
mys/chars/666.txt
Normal file
BIN
mys/texture2d/bg_img_1.png
Normal file
After Width: | Height: | Size: 1.6 MiB |
BIN
mys/texture2d/bg_img_2.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
mys/texture2d/bg_img_3.png
Normal file
After Width: | Height: | Size: 1.8 MiB |
BIN
mys/texture2d/char_fg_img.png
Normal file
After Width: | Height: | Size: 330 KiB |
BIN
mys/texture2d/char_mask_img.png
Normal file
After Width: | Height: | Size: 7.7 KiB |
BIN
mys/texture2d/fg_img_1.png
Normal file
After Width: | Height: | Size: 500 KiB |
BIN
mys/texture2d/fg_img_2.png
Normal file
After Width: | Height: | Size: 497 KiB |
BIN
mys/texture2d/jinglian_4.png
Normal file
After Width: | Height: | Size: 255 B |
BIN
mys/texture2d/jinglian_5.png
Normal file
After Width: | Height: | Size: 258 B |
BIN
mys/weapon/UI_EquipIcon_Bow_Amos.png
Normal file
After Width: | Height: | Size: 88 KiB |
BIN
mys/weapon/UI_EquipIcon_Bow_Arjuna.png
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
mys/weapon/UI_EquipIcon_Bow_Bakufu.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
mys/weapon/UI_EquipIcon_Bow_Blackrock.png
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
mys/weapon/UI_EquipIcon_Bow_Crowfeather.png
Normal file
After Width: | Height: | Size: 73 KiB |
BIN
mys/weapon/UI_EquipIcon_Bow_Curve.png
Normal file
After Width: | Height: | Size: 74 KiB |
BIN
mys/weapon/UI_EquipIcon_Bow_Dvalin.png
Normal file
After Width: | Height: | Size: 82 KiB |
BIN
mys/weapon/UI_EquipIcon_Bow_Exotic.png
Normal file
After Width: | Height: | Size: 80 KiB |
BIN
mys/weapon/UI_EquipIcon_Bow_Fleurfair.png
Normal file
After Width: | Height: | Size: 79 KiB |
BIN
mys/weapon/UI_EquipIcon_Bow_Fossil.png
Normal file
After Width: | Height: | Size: 61 KiB |