Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 09/27/15 in all areas

  1. M2 Download Center Download Here ( Internal ) Hi there Devs, I would like to share my "little" system. If you aren't interested in the introduction/preview etc. and you just want to download it and put in to your server, just scroll down until the "[How-To] Set up" subtitle. The story Firstly let me tell this system's story. I've got an idea one year before, that it would be good if the players would be able to put their items into a "global" system where they could see the other player's items, and they could buy it for DC or gold (that time I worked with the latest vanilla core (not with the source)). Then in the following 8 days I made it (it took about 80-90 working hours). Originally the system was created for one of my friend's server. but this server has never started, and nobody used this system. After some mounts I've decided to publish it on the Hungarian forum, because it won't worth to work on it for long hours if nobody uses it and its just collecting dust on my computer. Then I've published it on the 2nd of December, 2014. After some time I've decided to translate it into English and I've got a new idea for a new feature. This feature was: the trade system (I will explain its working later). This idea inspired by one of the players (from a server where this system was able to use). He told me that it would be better if they could set the gold price via an item (what's value is very high). Then with more than 180 working hours (totally) behind my back I'm here. Overview [How-To] Set up Customizing the tradehouse Questions and Answers Notes changelog: 19th of August, 2015: I publicated the tradehouse here. my toDo list: add logging for the system (the released version don't log the actions in the tradehouse) Thanks for reading the topic, if you have any problem/remark feel free to ask it here or write me a PM. Have a good day!
    1 point
  2. Open : cmd_general.cpp Search: ACMD(do_unmount) { if (true == ch->UnEquipSpecialRideUniqueItem()) { ch->RemoveAffect(AFFECT_MOUNT); ch->RemoveAffect(AFFECT_MOUNT_BONUS); if (ch->IsHorseRiding()) { ch->StopRiding(); } } else { ch->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("Àκ¥Å丮°¡ ²Ë Â÷¼­ ³»¸± ¼ö ¾ø½À´Ï´Ù.")); } } Replace:ACMD(do_unmount) { LPITEM item = ch->GetWear(WEAR_UNIQUE1); LPITEM item2 = ch->GetWear(WEAR_UNIQUE2); if (item && item->IsRideItem()) ch->UnequipItem(item); if (item2 && item2->IsRideItem()) ch->UnequipItem(item2); if (true == ch->UnEquipSpecialRideUniqueItem()) { ch->RemoveAffect(AFFECT_MOUNT); ch->RemoveAffect(AFFECT_MOUNT_BONUS); if (ch->IsHorseRiding()) { ch->StopRiding(); } } else { ch->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("Àκ¥Å丮°¡ ²Ë Â÷¼­ ³»¸± ¼ö ¾ø½À´Ï´Ù.")); } } Open char_battle.cpp Search: RemoveAffect(AFFECT_MOUNT_BONUS); Add: LPITEM item = GetWear(WEAR_UNIQUE1); LPITEM item2 = GetWear(WEAR_UNIQUE2); if (item && item->IsRideItem()) UnequipItem(item); if (item2 && item2->IsRideItem()) UnequipItem(item2); Best Regards Rideas.
    1 point
  3. Hello People, i created a small BanCenter for GameMasters.. It is not large, but is but simplifies some. The Serverside Code (on c++ or Lua) can you self create.. I havent now this.. # # GM Ban-Board by @Risan aka Zymos # Version 1.0 Alpha # Created: 03.10.2014 # LastUpdate: 03.10.2014 # import ui import chat import uiCommon CurrentlyBanTable = [ #Time { "NameK":"Userbeleidigung", "day":1, "hours":200, "mins":10, }, { "NameK":"Nachfrage von Fremdprogramme/Hacks/Bots", "day":1, "hours":200, "mins":10, }, { "NameK":"Obszöne Spiele/Shop/Gildennamen", "day":1, "hours":200, "mins":10, }, { "NameK":"Teambeleidigung", "day":1, "hours":200, "mins":10, }, { "NameK":"Bugausnutzung", "day":1, "hours":200, "mins":10, }, #perm 999 day == Permament ban { "NameK":"Cheaten/Haecken (PERM)", "day":999, "hours":0, "mins":0, }, { "NameK":"Clientmanipulierung (PERM)", "day":999, "hours":0, "mins":0, }, { "NameK":"Kauf/Verkauf von virtuellen Guetern (PERM)", "day":999, "hours":0, "mins":0, }, { "NameK":"Fremdwerbung (jeglicher art) (PERM)", "day":999, "hours":0, "mins":0, }, ] QuestionBeforeBan = True class GmBanBoard(ui.Window): def __init__(self): ui.Window.__init__(self) self.BuildWindow() def __del__(self): ui.Window.__del__(self) def BuildWindow(self): self.Board = ui.BoardWithTitleBar() self.Board.SetSize(310, 120) #x y self.Board.SetCenterPosition() self.Board.AddFlag('movable') self.Board.AddFlag('float') self.Board.SetTitleName('GameMaster - BanCenter') self.Board.SetCloseEvent(self.Close) self.comp = Component() #Ban Duration and Edits Desc self.DurationDesc = self.comp.TextLine(self.Board,"Laufzeit:", 10,60, self.comp.RGB(255, 255, 255)) self.DayEdit ,self.DayEdits = self.comp.EditLine(self.Board, '0',65, 60, 20, 15, 3) #parent, editlineText, x, y, width, heigh, max self.DayDesc = self.comp.TextLine(self.Board,"Tag(e)", 65+25,60, self.comp.RGB(255, 255, 255)) self.DayEdits.SetNumberMode() self.DayEdits.OnIMEUpdate = ui.__mem_func__(self.__OnUpdateValueEdit) self.HourEdit ,self.HourEdits = self.comp.EditLine(self.Board, '0',65+65, 60, 20, 15, 3) #parent, editlineText, x, y, width, heigh, max self.HourDesc = self.comp.TextLine(self.Board,"Stunden(n)", 65+25+65,60, self.comp.RGB(255, 255, 255)) self.HourEdits.SetNumberMode() self.HourEdits.OnIMEUpdate = ui.__mem_func__(self.__OnUpdateValueEdit) self.MinEdit ,self.MinEdits = self.comp.EditLine(self.Board, '0',65+65+85, 60, 20, 15, 3) #parent, editlineText, x, y, width, heigh, max self.MinDesc = self.comp.TextLine(self.Board,"Minute(n)", 65+25+65+85,60, self.comp.RGB(255, 255, 255)) self.MinEdits.SetNumberMode() self.MinEdits.OnIMEUpdate = ui.__mem_func__(self.__OnUpdateValueEdit) #SaktionUser self.SaktionDescName = self.comp.TextLine(self.Board,"UserName:", 10,90, self.comp.RGB(255, 255, 255)) self.SaktionNameEdit ,self.SaktionNameEdits = self.comp.EditLine(self.Board, '',65, 90, 100, 15, 18) #parent, editlineText, x, y, width, heigh, max #Buttons self.ClickOkButton = self.comp.Button(self.Board, 'Setzen', 'Setzt die Sanktion', 170, 90, self._ClickSetButton, 'd:/ymir work/ui/public/middle_button_01.sub', 'd:/ymir work/ui/public/middle_button_02.sub', 'd:/ymir work/ui/public/middle_button_03.sub') self.ClickAbortButton = self.comp.Button(self.Board, 'Abbruch', 'Schliessen', 235, 90, self.Close, 'd:/ymir work/ui/public/middle_button_01.sub', 'd:/ymir work/ui/public/middle_button_02.sub', 'd:/ymir work/ui/public/middle_button_03.sub') #Ban ComboBox #LOAD LAST!!! self._LoadComboBox() def _ClickSetButton(self): GetUserName = self.SaktionNameEdits .GetText() if len(GetUserName) == 0: self.PopupMessage("Du musst einen gueltigen Namen angeben!") return if self.DayEdits .GetText() == 0 and self.HourEdits .GetText() == 0 and self.MinEdits .GetText() == 0: self.PopupMessage("Ungueltige Zeitangaben!") return if self.CurrentBanType == 0: self.PopupMessage("Du musst einen Grund auswaehlen!") return if QuestionBeforeBan == True: questiontext = "Moechtest du wirklich '" + str( GetUserName ) +"' Bannen?" questionDialog = uiCommon.QuestionDialog2() questionDialog.SetText1(questiontext) questionDialog.SetText2( str(" Laufzeit: " + str( self.DayEdits .GetText() ) + " Tag(e) | " + str( self.HourEdits .GetText() ) + " Stunde(n) | " + str( self.MinEdits .GetText() ) + " Minute(n) ") ) questionDialog.SetAcceptEvent(ui.__mem_func__(self.questionDialog__Accept)) questionDialog.SetCancelEvent(ui.__mem_func__(self.questionDialog_Cleras)) questionDialog.SetWidth(280) questionDialog.Open() self.dlgQuestion = questionDialog else: self._Banned() def PopupMessage(self, msg): self.wndPopupDialog = uiCommon.PopupDialog() self.wndPopupDialog.SetText(msg) self.wndPopupDialog.Open() def questionDialog__Accept(self): self._Banned() self.questionDialog_Cleras() def questionDialog_Cleras(self): self.dlgQuestion = None def _Banned(self): GetUserName = self.SaktionNameEdits .GetText() BanType = self.CurrentBanType BanGrund = str( CurrentlyBanTable[BanType]["NameK"] ) Days = self.DayEdits .GetText() Hours = self.HourEdits .GetText() Mins = self.MinEdits .GetText() chat.AppendChat(1,"Fucking Banned Command is Answer") self.Close() def _LoadComboBox(self): self.BanTextDesc = self.comp.TextLine(self.Board,"Ban Grund:", 10,35, self.comp.RGB(255, 255, 255)) self.CurrentBanType = 0 self.ComboBoxBans = self.comp.ComboBox(self.Board, 'Waehle den BanGrund',65, 35, 225) #x y BreiteDerBox for x in xrange( len(CurrentlyBanTable) ): self.ComboBoxBans.InsertItem(x, str( CurrentlyBanTable[x]["NameK"] ) ) self.ComboBoxBans.SetEvent(self._OnClickComboBoxBans) def __OnUpdateValueEdit(self): SelfCheckEdit = False if SelfCheckEdit == True: ui.EditLine.OnIMEUpdate(self.DayEdits) ui.EditLine.OnIMEUpdate(self.HourEdits) ui.EditLine.OnIMEUpdate(self.MinEdits) def _OnClickComboBoxBans(self,index): self.CurrentBanType = index self.ComboBoxBans.SetCurrentItem( str( CurrentlyBanTable[ self.CurrentBanType ]["NameK"] ) ) self.DayEdits .SetText( str( CurrentlyBanTable[ self.CurrentBanType ]["day"] ) ) self.HourEdits .SetText( str( CurrentlyBanTable[ self.CurrentBanType ]["hours"] ) ) self.MinEdits .SetText( str( CurrentlyBanTable[ self.CurrentBanType ]["mins"] ) ) def _SetName(self,arg1): self.SaktionNameEdits .SetText( str( arg1 ) ) #Standart def Close(self): self.Board.Hide() self.questionDialog_Cleras() #BugFix! def Show(self): self.Board.Show() def Destroy(self): self.Board = None self.comp = None def Openwindow(self): if self.Board.IsShow(): self.Board.Hide() else: self.Board.Show() #Zusatz class Component: def ComboBox(self, parent, text, x, y, width): combo = ui.ComboBox() if parent != None: combo.SetParent(parent) combo.SetPosition(x, y) combo.SetSize(width, 15) combo.SetCurrentItem(text) combo.Show() return combo def TextLine(self, parent, textlineText, x, y, color): textline = ui.TextLine() if parent != None: textline.SetParent(parent) textline.SetPosition(x, y) if color != None: textline.SetFontColor(color[0], color[1], color[2]) textline.SetText(textlineText) textline.Show() return textline def EditLine(self, parent, editlineText, x, y, width, heigh, max): SlotBar = ui.SlotBar() if parent != None: SlotBar.SetParent(parent) SlotBar.SetSize(width, heigh) SlotBar.SetPosition(x, y) SlotBar.Show() Value = ui.EditLine() Value.SetParent(SlotBar) Value.SetSize(width, heigh) Value.SetPosition(1, 1) Value.SetMax(max) Value.SetLimitWidth(width) Value.SetMultiLine() Value.SetText(editlineText) #Value.SetHorizontalAlignRight() Value.Show() return SlotBar, Value def RGB(self, r, g, : return (r*255, g*255, b*255) def Button(self, parent, buttonName, tooltipText, x, y, func, UpVisual, OverVisual, DownVisual): button = ui.Button() if parent != None: button.SetParent(parent) button.SetPosition(x, y) button.SetUpVisual(UpVisual) button.SetOverVisual(OverVisual) button.SetDownVisual(DownVisual) button.SetText(buttonName) button.SetToolTipText(tooltipText) button.Show() button.SetEvent(func) return button GmBanBoard().Show() Best Regards, Risan Screenshort:
    1 point
  4. So maybe it's client problem - try on another client, you can also try to use CLEAN questlib.lua from clean files or somewhere
    1 point
  5. Do it this way: when kill with npc.get_race() == 101 with party.is_party() begin local count = party.getf("quest", "state") + 1 if count <= 15 then party.setf("quest", "state", count) q.set_counter("Rest-amount", 15 - count) if count == 15 then say_title("lorem ipsum dolor") say("") end end end and change "quest" to your quest_name for ex. "party_mission" quest party_mission begin and save quest as party_mission.quest (or change this name to another one but it's nice to use this same quest_name at quest also
    1 point
  6. To be honest just use party.setf("quest_name", "flag_name", party.getf("quest_name", "flag_name")+1) party.getf("quest_name", "flag_name") quest_name is name of the quest you declare at first line for ex.- quest quest_name begin flag_name can be anything, for ex. mob_kills how can I explain you setqf or setf? - the difference between pc.setqf and pc.setf is number of arguments function takes, pc.getqf("flag_name") works only in one quest where you use that function, if you use pc.getf("quest_name", "flag_name") you can get FLAG from another quest! but you still can use party.getf / party.setf in that way only at one quest
    1 point
  7. Every quest is bugged and looks like on the screenshot at first post? - so they don't showing any other text than square? Check syserr of your game core - it says you all, maybe it's questlib problem or ./make.sh / folder / qc don't have permission to something
    1 point
  8. Open the char_battle.cpp: under: iExp = AdjustExpByLevel(to, iExp); add this: if (show_exp) { to->ChatPacket(CHAT_TYPE_INFO, "|cff00ff00|H|hEarned Exp : %d", iExp); } now open config.h and add this: extern bool show_exp; now open config.cpp and annd under this: bool bXTrapEnabled = false; this: bool show_exp = false; now under this funktion: TOKEN("block_char_creation") { int tmp = 0; str_to_number(tmp, value_string); if (0 == tmp) g_BlockCharCreation = false; else g_BlockCharCreation = true; continue; } add this: TOKEN("show_exp") { int exp = 0; str_to_number(exp, value_string); if (1 == exp) { show_exp = true; fprintf(stderr, "Show EXP: %in", exp); } } done but not testet.... .Kori
    1 point
  9. 1 point
  10. ​I will answer you again. He didnt said he didnt allowed re-uploads. His reason to leave was not getting a developer rank. If that isnt childish i dont know what is. I wont remove my re-upload or what so ever. Password is meant to publish metin2dev. Re-uploads links:
    1 point
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.