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!
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
İkarus grid offshop rework ve arama camı
Paylaşıldıysa kapatılabilir anlatım mevcuttur. İyi kullanımlar dilerim
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Moderatör tarafında düzenlendi:
En Çok Reaksiyon Alan Mesajlar
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 buGrid 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.
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
İkarus offline shop sistemi değil,offline shopun gride uyarlanması için dosyalar + ticaret camı bulunmaktaSöktünüzmü Kompile Yoksa sadece ticaret camımı var
he anladım ikarus offine shopa grid giydirme gibi birşeyİkarus offline shop sistemi değil,offline shopun gride uyarlanması için dosyalar + ticaret camı bulunmakta
Evet aynen o şekildehe anladım ikarus offine shopa grid giydirme gibi birşey
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 108
- Görüntüleme
- 20K
- Cevaplar
- 1
- Görüntüleme
- 473
- Cevaplar
- 3
- Görüntüleme
- 395
- Cevaplar
- 72
- Görüntüleme
- 2K
- Sabit
- Anket
- Cevaplar
- 1K
- Görüntüleme
- 177K
