Scarlet 1
Scarlet
Best Studio 1
Best Studio
mannaxxx 1
mannaxxx
Agora Metin2 1
Agora Metin2
[DEV]AB 1
[DEV]AB
Sevdamsın 1
Sevdamsın
TuZaKK 1
TuZaKK
kaptanmikro1 1
kaptanmikro1
farkmt2official 2
farkmt2official
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Hikaye Ekle
Kaynak ikonu

Altın Konu İkarus Offshop Grid Rework & Shop Search 1

indirmek için izniniz yok
  • Konuyu başlatan Konuyu başlatan Sturdyshownolove
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 61
  • Görüntüleme Görüntüleme 18K
5.00 yıldız(lar) 1 Değerlendirme Değerlendirenler

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!




İkarus grid offshop rework ve arama camı
Paylaşıldıysa kapatılabilir anlatım mevcuttur. İyi kullanımlar dilerim


 
Moderatör tarafında düzenlendi:

En Çok Reaksiyon Alan Mesajlar

Grid varsa direk soldan başlamaz griddeki herhangi istediğin bir yere itemleri yerleştirebilirsin. Zira ikarusta bu olay mevcut olmadığı için direk en soldan başlar itemler eklenmeye.
Tam olarak bu değil, normalde ikarus offlineshopta 1 slot boyut yer kaplayan item içinde 3lü slot kullanılıyor, 2 slot boyut yer kaplayan item içinde aynısı. Bu eklenti ile birlikte item kendi boyutu kadar alan kaplıyor olay tamamen bu
Test ettim çalışıyor ama anlatımda bir kaç fonksiyon eksik altta veriyorum.

[CODE lang="cpp" title="PythonWindowManagerModule.cpp"]PyObject* wndMgrGetEmptySlot(PyObject* poSelf, PyObject* poArgs)
{
UI::CWindow* pWin;
if (!PyTuple_GetWindow(poArgs, 0, &pWin))
return Py_BuildException();

int size;
if (!PyTuple_GetInteger(poArgs, 1, &size))
return Py_BuildException();

UI::CSlotWindow* pSlotWin = (UI::CSlotWindow*)pWin;

return Py_BuildValue("i", (pSlotWin->FindEmptyGrid(size)));
}[/CODE]

[CODE lang="cpp" title="new_offlineshop_manager.h"]/*db*/ void SendShopExtendTimeDBPacket(DWORD dwOwnerID, DWORD dwTime);
/*db*/ bool RecvShopExtendTimeDBPacket(DWORD dwOwnerID, DWORD dwTime);

/*cli.*/bool RecvShopExtendTimeClientPacket(LPCHARACTER ch, DWORD dwTime);[/CODE]

editline classı için eksik fonksiyonların eklenmiş hali.

[CODE lang="python" title="ui.py"]class EditLine(TextLine):
candidateWindowClassDict = {}

def __init__(self):
TextLine.__init__(self)

if app.WJ_MULTI_TEXTLINE:
self.DisableEnterToken()
self.eventReturn = Window.NoneMethod
self.eventEscape = Window.NoneMethod
self.eventTab = None
self.numberMode = False
self.UseCodePage = True #MT-679 개인#MT 타이틀의 CodePage 이슈
self.useIME = True

self.bCodePage = False

self.candidateWindowClass = None
self.candidateWindow = None
self.SetCodePage(app.GetDefaultCodePage())

self.readingWnd = ReadingWnd()
self.readingWnd.Hide()

self.eventUpdate = None

self.overLay = TextLine()
self.overLay.SetParent(self)
self.overLay.SetPosition(0, 0)
self.overLay.SetPackedFontColor(WHITE_COLOR)
self.overLay.Hide()

self.update_event = None
self.update_event_args = None

def __del__(self):
TextLine.__del__(self)

self.eventReturn = Window.NoneMethod
self.eventEscape = Window.NoneMethod
self.eventTab = None

def SetCodePage(self, codePage):
candidateWindowClass=EditLine.candidateWindowClassDict.get(codePage, EmptyCandidateWindow)
self.__SetCandidateClass(candidateWindowClass)

def __SetCandidateClass(self, candidateWindowClass):
if self.candidateWindowClass==candidateWindowClass:
return

self.candidateWindowClass = candidateWindowClass
self.candidateWindow = self.candidateWindowClass()
self.candidateWindow.Load()
self.candidateWindow.Hide()

def RegisterWindow(self, layer):
self.hWnd = wndMgr.RegisterTextLine(self, layer)

def SAFE_SetReturnEvent(self, event):
self.eventReturn = __mem_func__(event)

def SetReturnEvent(self, event):
self.eventReturn = event

def SetEscapeEvent(self, event):
self.eventEscape = event

def SetTabEvent(self, event):
self.eventTab = event

def SetOverlayText(self, text):
self.overLay.SetText(text)
self.__RefreshOverlay()

def GetOverlayText(self):
return self.overLay.GetText()

def GetDisplayText(self):
if len(self.GetText()):
return self.GetText()
else:
return self.overLay.GetText()

def __RefreshOverlay(self):
if len(self.GetText()):
self.overLay.Hide()
else:
self.overLay.Show()

def SetMax(self, max):
self.max = max
wndMgr.SetMax(self.hWnd, self.max)
ime.SetMax(self.max)
self.SetUserMax(self.max)

def SetUserMax(self, max):
self.userMax = max
ime.SetUserMax(self.userMax)

def SetNumberMode(self):
self.numberMode = True

#MT-679 개인 상점 타이틀의 CodePag#MT슈#MT def SetUseCodePage(self, bUse = True):
self.UseCodePage = bUse

#def AddExceptKey(self, key):
# ime.Add#def#defy(key)

#def ClearExceptKey(self):
# ime.ClearE#def#def()

def SetIMEFlag(self, flag):
self.useIME = flag

def SetText(self, text):
wndMgr.SetText(self.hWnd, text)

if self.IsFocus():
ime.SetText(text)

self.__RefreshOverlay()

def Enable(self):
wndMgr.ShowCursor(self.hWnd)

def Disable(self):
wndMgr.HideCursor(self.hWnd)

def SetEndPosition(self):
ime.MoveEnd()

def OnSetFocus(self):
Text = self.GetText()
ime.SetText(Text)
ime.SetMax(self.max)
ime.SetUserMax(self.userMax)
ime.SetCursorPosition(-1)
if self.numberMode:
ime.SetNumberMode()
else:
ime.SetStringMode()
ime.EnableCaptureInput()
if self.useIME:
ime.EnableIME()
else:
ime.DisableIME()

wndMgr.ShowCursor(self.hWnd, True)

def OnKillFocus(self):
self.SetText(ime.GetText(self.bCodePage))
self.OnIMECloseCandidateList()
self.OnIMECloseReadingWnd()
ime.DisableIME()
ime.DisableCaptureInput()
wndMgr.HideCursor(self.hWnd)

def OnIMEChangeCodePage(self):
self.SetCodePage(ime.GetCodePage())

def OnIMEOpenCandidateList(self):
self.candidateWindow.Show()
self.candidateWindow.Clear()
self.candidateWindow.Refresh()

gx, gy = self.GetGlobalPosition()
self.candidateWindow.SetCandidatePosition(gx, gy, len(self.GetText()))

return True

def OnIMECloseCandidateList(self):
self.candidateWindow.Hide()
return True

def OnIMEOpenReadingWnd(self):
gx, gy = self.GetGlobalPosition()
textlen = len(self.GetText())-2
reading = ime.GetReading()
readinglen = len(reading)
self.readingWnd.SetReadingPosition( gx + textlen*6-24-readinglen*6, gy )
self.readingWnd.SetText(reading)
if ime.GetReadingError() == 0:
self.readingWnd.SetTextColor(0xffffffff)
else:
self.readingWnd.SetTextColor(0xffff0000)
self.readingWnd.SetSize(readinglen * 6 + 4, 19)
self.readingWnd.Show()
return True

def OnIMECloseReadingWnd(self):
self.readingWnd.Hide()
return True

def IsNumber(self, text) :
try :
int(text)
return True
except ValueError :
return False

def IsIncludeCodePage(self, text) :
textLen = len(text)
idx = 0

while(idx < textLen) :
n = text.find("@", idx)

if n == -1 :
break
elif n+4 < textLen and self.IsNumber(text[n+1:n+4]) == True:
return True
else:
idx = n + 1

return False

def OnIMEUpdate(self):
# MT-679 개인 상점 타이틀의 CodePage 이슈
if self.UseCodePage == False and self.IsIncludeCodePage(ime.GetText(self.bCodePage)) == True :
ime.SetText("")

snd.PlaySound("sound/ui/type.wav")
TextLine.SetText(self, ime.GetText(self.bCodePage))

self.__RefreshOverlay()

if self.eventUpdate:
self.eventUpdate()

def SetUpdateEvent(self, event, *args):
self.update_event = event
if len(args) != 0:
self.update_event_args = args

def OnUpdateEvent(self):
if self.update_event:
if self.update_event_args:
self.update_event(self.update_event_args[0])
else:
self.update_event()

def OnIMETab(self):
if self.eventTab:
self.eventTab()
return True

return False

def OnIMEReturn(self):
snd.PlaySound("sound/ui/click.wav")
self.eventReturn()

return True

def OnPressEscapeKey(self):
self.eventEscape()
return True

def OnKeyDown(self, key):
if app.DIK_F1 == key:
return False
if app.DIK_F2 == key:
return False
if app.DIK_F3 == key:
return False
if app.DIK_F4 == key:
return False
if app.DIK_LALT == key:
return False
if app.DIK_SYSRQ == key:
return False
if app.DIK_LCONTROL == key:
return False
if app.DIK_V == key:
if app.IsPressed(app.DIK_LCONTROL):
ime.PasteTextFromClipBoard()

return True

def OnKeyUp(self, key):
if app.DIK_F1 == key:
return False
if app.DIK_F2 == key:
return False
if app.DIK_F3 == key:
return False
if app.DIK_F4 == key:
return False
if app.DIK_LALT == key:
return False
if app.DIK_SYSRQ == key:
return False
if app.DIK_LCONTROL == key:
return False

return True

def OnIMEKeyDown(self, key):
# Left
if app.VK_LEFT == key:
ime.MoveLeft()
return True
# Right
if app.VK_RIGHT == key:
ime.MoveRight()
return True

# Home
if app.VK_HOME == key:
ime.MoveHome()
return True
# End
if app.VK_END == key:
ime.MoveEnd()
return True

# Delete
if app.VK_DELETE == key:
ime.Delete()
TextLine.SetText(self, ime.GetText(self.bCodePage))
return True

return True

# def OnMouseLeftButtonDown(self):
# self.SetFocus()

def OnMouseLeftButtonDown(self):
if False == self.IsIn():
return False

self.SetFocus()
PixelPosition = wndMgr.GetCursorPosition(self.hWnd)
ime.SetCursorPosition(PixelPosition)

if app.WJ_MULTI_TEXTLINE:
def DisableEnterToken(self):
wndMgr.DisableEnterToken(self.hWnd)

class MarkBox(Window):
def __init__(self, layer = "UI"):
Window.__init__(self, layer)[/CODE]
Something is missing
Öğeyi görmek için üye olmalısınız.

Missing part:
Search in "new_offlineshop_manager.h" for
Kod:
bool        RecvShopChangeNameDBPacket(DWORD dwOwnerID, const char* szName);

add after

Kod:
#ifdef ENABLE_NEW_OFFLINESHOP_RENEWAL
/*db*/    bool        RecvShopExtendTimeClientPacket(LPCHARACTER ch, DWORD dwTime);
/*db*/    void        SendShopExtendTimeDBPacket(DWORD dwOwnerID, DWORD dwTime);
/*db*/    bool        RecvShopExtendTimeDBPacket(DWORD dwOwnerID, DWORD dwTime);
#endif

But after that I get new error:
Öğeyi görmek için üye olmalısınız.

Fixed missing "#include "item.h" in my input_p2p.cpp

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

Geri
Üst