Jump to content

alberto2010

Inactive Member
  • Posts

    29
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by alberto2010

  1. Hello, i really want to make metin2 to work in lan how it was before i have a 40k source.

    Look let's say my router gateway is 192.168.1.1 and server ip via dhcp is 192.168.1.150 and my external ip is something like 69.69.69.69

    Look what i want to do, i want the server to work inside lan 24/7 even if i'm getting flooded it still have to stay up inside lan.

    The thing is ,

    If i'm using as server ip in config : 192.168.1.150 it will work but only on lan , outside people that connect with 69.69.69.69 will get disconnected at select character.

    If i'm using 69.69.69.69 as server ip in config, outside people will not get anymore disconnect at select character but , there is a but! , if server is getting flooded and outside bandwidth fully ocuppied the server will shutdown game cores. And the reason for that is because server isn't using the lan ip to connect to himself , it is using 69.69.69.69.

     

    I don't know how to explain it better.

     

     

  2. hello guys, i want to make a ban command but i have a problem , this is the code:

    ACMD(do_ban)
    {
    char arg1[256], arg2[256];
    const char* name;
    const char* reason;
    if (!ch || ch->GetGMLevel() != GM_IMPLEMENTOR)
    {
        sys_log(0, "do_ban without rights %s[%d]", ch->GetName(), ch->GetPlayerID());
        return;
    }
    two_arguments(argument, arg1, sizeof (arg1), arg2, sizeof(arg2));
    if (!*arg1 || !*arg2)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "Correct command form: /ban <player name> <reason>");
        return;
    }
    name = arg1;
    reason = arg2;
    LPDESC LDESC = DESC_MANAGER::instance().FindByCharacterName(name);
    LPCHARACTER LCHARACTER = LDESC ? LDESC->GetCharacter() : NULL;
    if (!LCHARACTER)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "%s not found.", name);
        return;
    }
    if (LCHARACTER == ch)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "You cant ban yourself!");
        return;
    }
    if (LCHARACTER->GetGMLevel() >= GM_LOW_WIZARD)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "You cant do that.");
        return;
    }
    LCHARACTER = CHARACTER_MANAGER::instance().FindPC(name);
    std::auto_ptr<SQLMsg> msg(DBManager::instance().DirectQuery("UPDATE account.account SET status = 'BLOCK' WHERE id = %d", LCHARACTER->GetAID()));
    std::auto_ptr<SQLMsg> msg(DBManager::instance().DirectQuery("UPDATE player.player SET reason = %s WHERE id = %d", reason, LCHARACTER->GetAID()));
    LDESC->DelayedDisconnect(5);
    sys_log(0, "%s[%d] banned %s with reason: %s", ch->GetName(), ch->GetPlayerID(), name, reason);
    ch->ChatPacket(CHAT_TYPE_INFO, "%s was banned with reason: %s", name, reason);
    }

    my problem is how i can use two directquery?

    i get this when i try to compile:

    cmd_gm.cpp:2836: error: redeclaration of 'std::auto_ptr<_SQLMsg> msg'
    cmd_gm.cpp:2836: error: 'std::auto_ptr<_SQLMsg> msg' previously declared here
     

  3. Hello guys , i want to change bonuses from this item:

    71136	ÇÒ·ÎÀ© »çÅÁ	ITEM_COSTUME	COSTUME_ACCSLOT	1	ANTI_MYSHOP | ANTI_STACK | ANTI_GIVE | ANTI_SELL | ANTI_DROP	NONE	NONE	NONE	0	0	0	0	0	REAL_TIME	0	LIMIT_NONE	0	APPLY_NONE	0	APPLY_NONE	0	APPLY_NONE	0	0	0	0	0	0	0	0	0	0

    but i don't understand where to put values...

    here is what i want to add:

    PV: 3000 

    20% Chance of Critical Hit

    25% Chance of Piercing Hit(this is penetrate_pct)

    Strong against Half Human +15%

    +10 Strength

  4. i don't like to help romanians but .. just install this:

    quest fix_bug_string begin
    	state start begin
    		when login begin
    			setskin(NOWINDOW)
    			say_title(" ")
    			return
    		end
    	end
    end

    and if you have quests like this:

    quest give_basic_weapon begin
    	state start begin
    		when login with pc.get_level() >= 1 begin
    			say_title("text")
    			say("text")
    			say("text")
    			say("text")
    			say("text")
    			say("text")
    			pc.give_item2(x,y)
    			set_state(endcall)
    		end
    	end
    	state endcall begin
    	end
    end

    you have to rewrite them like this exemple:

    quest give_basic_weapon begin
    	state start begin
    		when login with pc.get_level() >= 1 begin
    			timer("give_basic_weapon", 2)
    		end
    		when give_basic_weapon.timer begin
    			say_title("text")
    			say("text")
    			say("text")
    			say("text")
    			say("text")
    			say("text")
    			pc.give_item2(x,y)
    			set_state(endcall)
    		end
    	end
    	state endcall begin
    	end
    end

     

    • Love 1
  5. CtA2Biz.png

    I implemented a bonus page board and i have a problem with it when i press button again , this page just show again and again when i press button , not hiding.

    These are scripts:

    uibonuspage.py

    Spoiler
    
    import ui
    import chat
    import app
    import player
    import snd
    import item
    import net
    import game
    import uiinventory
    
    class BonusBoardDialog(ui.ScriptWindow):
    	MaxBoni = { "0": 20000, "1": 16000, "2": 320, "3": 32, "4": 32, "5": 32, "6": 32, "7": 16, "9": 40, "10": 60, "11": 60, "12": 16, "13": 24, "14": 16, "15": 30, "16": 30, "17": 50, "18": 100, "19": 100, "20": 100, "21": 100, "22": 100, "23": 20, "24": 40, "27": 15, "28": 30, "29": 72, "30": 72, "31": 72, "32": 72, "33": 72, "34": 72, "35": 60, "36": 60, "37": 40, "38": 60, "39": 20, "41": 10, "43": 60, "44": 60, "45": 40, "48": 1, "53": 50 }
    	BonusDict = ["PvP", "PvM", "Lycan"]
    	BonusIDListe = [["", 0, 0],["PV acumulat:", 1, 0],["PM acumulat:", 2, 0],["Viteza farmecului:", 9, 0],["Regenerare PV:", 10, 32],["Regenerare PM:", 11, 33],["ªansa de otrãvire:", 12, 37],["ªansa de blocare:", 13, 38],["ªansa unei lov. critice:", 15, 40],["ªansa unei lov. pãtr:", 16, 41],["Tare împotriva semi-om:", 17, 43],["Tare împotriva animalelor:", 18, 44],["Tare împotriva orcilor:", 19, 45],["Tare împotriva esoteriecilor:", 20, 46],["Tare împotriva vampirilor:", 21, 47],["Tare împotriva diavolului:", 22, 48],["Absorbire PV:", 23, 63],["Absorbire PM:", 24, 64],["Blocare atac corporal:", 27, 67],["Evitare atac cu sãgeþi:", 28, 68],["Apãrare cu sabia:", 29, 69],["Apãrare cu douã mâini:", 30, 70],["Apãrare pumnal:", 31, 71],["Apãrare clopot:", 32, 72],["Apãrare evantai:", 33, 73],["Rezistenþã la sãgeþi:", 34, 74],["Rezistenþã la foc:", 35, 75],["Rezistenþã la magie:", 37, 77],["Rezistenþã la vânt:", 38, 78],["Rezistenþã la otravã:", 41, 81],["Bonus exp acumulat:", 43, 83],["Bonus yang acumulat:", 44, 84],["Bonus drop acumulat:", 45, 85],["APPLY_SKILL", 51, 0],["Valoarea atacului:", 53, 0],["Tare împotriva monstrilor:", 63, 53],["Aparare Impotriva Ghearelor", 142, 142],["Sansa La Sangerare", 138, 138],["Rezistenta La Sangerare", 139, 139]]
    	SpecialBoni = { 1: "Norm.State", 2: "Norm.State", 3: "Norm.State", 4: "Norm.State", 5: "Norm.State", 6: "Norm.State", 55: "Norm.State", 56: "Norm.State", 58: "Norm.State" }
    	PvPOffenseBoni = ["Tare împotriva semi-om:", "ªansa unei lov. critice:", "ªansa unei lov. pãtr:", "Viteza farmecului:", "Valoarea atacului:", "ªansa de otrãvire:", "ªansa de blocare:", "Rezistenþã la otravã:", "Rezistenþã la foc:", "Regenerare PM:"]
    	PvPDefenseBoni = ["Apãrare cu sabia:", "Apãrare cu douã mâini:", "Apãrare pumnal:", "Apãrare clopot:", "Apãrare evantai:", "Rezistenþã la sãgeþi:", "Evitare atac cu sãgeþi:", "Rezistenþã la magie:", "Blocare atac corporal:", "Regenerare PV:"]
    	PvMOffenseBoni = ["PV acumulat:", "Tare împotriva animalelor:", "Tare împotriva vampirilor:", "Tare împotriva orcilor:", "Absorbire PM:", "Rezistenþã la vânt:"]
    	PvMDefenseBoni = ["PM acumulat:", "Tare împotriva monstrilor:", "Tare împotriva diavolului:", "Tare împotriva esoteriecilor:", "Absorbire PV:"]
    	LeftoversOffenseBoni = ["Sansa La Sangerare"]
    	LeftoversDefenseBoni = ["Aparare Impotriva Ghearelor","Rezistenta La Sangerare"]
    
    	BonusList = []
    	UI = []
    	
    	
    	uiinventory.aratabonusuri = 0
    	
    	TestSystem = 0
    	ProcessTimeStamp = 0
    	
    	def __init__(self):
    		ui.ScriptWindow.__init__(self)
    		self.LoadUI()
    		import uiinventory
    		uiinventory.aratabonusuri = 1
    
    		
    	def __del__(self):
    		ui.ScriptWindow.__del__(self)
    		self.Board.Hide()
    		uiinventory.aratabonusuri = 0
    
    
    	def LoadUI(self):
    		self.Board = ui.BoardWithTitleBar()
    		self.Board.SetSize(313, 420)
    		self.Board.SetCenterPosition()
    		self.Board.AddFlag("movable")
    		self.Board.AddFlag("float")
    		self.Board.SetTitleName("Pagina De Bonusuri")
    		self.Board.SetCloseEvent(self.__del__)
    		
    		Vertical = ui.Line()
    		Vertical.SetParent(self.Board)
    		Vertical.SetPosition(8, 60)
    		Vertical.SetSize(297, 0)
    		Vertical.SetColor(0xff777777)
    		Vertical.Show()
    		self.UI.append(Vertical)
    		
    		x = 25
    		for i in xrange(3):
    			ChangeBonusDict = ui.Button()
    			ChangeBonusDict.SetParent(self.Board)
    			ChangeBonusDict.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub")
    			ChangeBonusDict.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub")
    			ChangeBonusDict.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub")
    			ChangeBonusDict.SetText(self.BonusDict[i])
    			ChangeBonusDict.SetPosition(x, 380)
    			ChangeBonusDict.SetEvent(lambda arg = ChangeBonusDict.GetText(): self.ChangeBonusDict(arg))
    			ChangeBonusDict.Show()
    			x += 88
    			self.UI.append(ChangeBonusDict)
    		
    		x = 55
    		Type = ["Ofensive", "Defensive"]
    		for i in xrange(2):
    			BonusDescription = ui.TextLine()
    			BonusDescription.SetParent(self.Board)
    			BonusDescription.SetPosition(x, 35)
    			BonusDescription.SetText(str(Type[i]))
    			BonusDescription.SetFontColor(1.0, 0.63, 0)
    			BonusDescription.Show()			
    			x += 150
    			self.UI.append(BonusDescription)
    
    		self.SetBoni(self.BonusDict[0])
    		self.dict = self.BonusDict[0]
    		self.Board.Show()
    		uiinventory.aratabonusuri = 1
    		
    		
    		
    		
    		
    		
    	def SetBoni(self, type):
    		Offense = [[25, 70], [25, 100], [25, 130], [25, 160], [25, 190], [25, 220], [25, 250], [25, 280], [25, 310], [25, 340]]
    		Defense = [[170, 70], [170, 100], [170, 130], [170, 160], [170, 190], [170, 220], [170, 250], [170, 280], [170, 310], [170, 340]]
    		for bonus in self.BonusIDListe:
    			if type == self.BonusDict[0]:
    				self.CheckBonus(bonus, self.PvPOffenseBoni, Offense)
    				self.CheckBonus(bonus, self.PvPDefenseBoni, Defense)
    			elif type == self.BonusDict[1]:
    				self.CheckBonus(bonus, self.PvMOffenseBoni, Offense)
    				self.CheckBonus(bonus, self.PvMDefenseBoni, Defense)
    			elif type == self.BonusDict[2]:
    				self.CheckBonus(bonus, self.LeftoversOffenseBoni, Offense)
    				self.CheckBonus(bonus, self.LeftoversDefenseBoni, Defense)
    			else:
    				return
    				
    	def CheckBonus(self, bonus, bonuslist, offset):
    		for boni in bonuslist:
    			if bonus[0] == boni:
    				try:
    					Index = bonuslist.index(boni)
    					BonusDescription = ui.TextLine()
    					BonusDescription.SetParent(self.Board)
    					BonusDescription.SetPosition(offset[Index][0], offset[Index][1])
    					BonusDescription.SetText(str(bonus[0]))
    					BonusDescription.Show()
    					
    					BonusSlotBar = ui.SlotBar()
    					BonusSlotBar.SetParent(self.Board)
    					BonusSlotBar.SetSize(115, 15)
    					BonusSlotBar.SetPosition(offset[Index][0], offset[Index][1] + 15)
    					BonusSlotBar.Show()
    					
    					BonusAttrLine = ui.TextLine()
    					BonusAttrLine.SetParent(self.Board)
    					BonusAttrLine.SetPosition(offset[Index][0] + 5, offset[Index][1] + 15)
    					
    					try:
    						Type = self.SpecialBoni[bonus[1]]
    						Attribute = self.EquipAttribute(bonus)
    					except:
    						Attribute = player.GetStatus(int(bonus[2]))
    
    					
    					if self.TestSystem != 1:
    						BonusAttrLine.SetText(str(Attribute))
    						try:
    							if int(Attribute) >= int(self.MaxBoni[str(bonus[1])]):
    								BonusAttrLine.SetFontColor(1.0, 0.63, 0)
    							else:
    								BonusAttrLine.SetFontColor(1, 1, 1)
    						except:
    							BonusAttrLine.SetFontColor(1, 1, 1)
    					else:
    						BonusAttrLine.SetText("Test system is active")
    						BonusAttrLine.SetFontColor(0.1, 0.7, 1.0)
    					
    					BonusAttrLine.Show()
    					self.BonusList.append([BonusDescription, BonusAttrLine, BonusSlotBar])
    				except:
    					pass		
    				
    	def EquipAttribute(self, bonus):
    		value = 0
    		for slot in xrange(90, 101):
    			for attr in xrange(0, 7):
    				attr, val = player.GetItemAttribute(slot, attr)
    				if int(attr) == bonus[1]:
    					value += int(val)
    		return int(value)
    
    	def ChangeBonusDict(self, dict):
    		self.dict = dict
    		for bonus in self.BonusList:
    			try:
    				for array in bonus:
    					array.Hide()
    			except:
    				pass			
    		self.SetBoni(dict)
    		
    	def OnUpdate(self):
    		import item
    		if int(app.GetTime()) > int(self.ProcessTimeStamp) + 6:
    			self.SetBoni(self.dict)
    			self.ProcessTimeStamp = app.GetTime()
    			
    #BonusBoardDialog().Show()

     

    inside uiinventory (just bonus page scripts):

    Spoiler
    
    ### Above class InventoryWindow(ui.ScriptWindow): is this :
    aratabonusuri = 0
    ### Above self.mallButton = self.GetChild2("MallButton") is this:
    			self.PaginaBonusuri = self.GetChild2("PaginaBonusuri")
    ### Above self.mallButton.SetEvent(ui.__mem_func__(self.ClickMallButton)) is this:
    		if self.PaginaBonusuri:
    			self.PaginaBonusuri.SetEvent(ui.__mem_func__(self.ClickPaginaBonusuri))
    ### Above def ClickMallButton(self): is this:
    	def ClickPaginaBonusuri(self):
    		import event
    		import game
    		import uibonuspage
    		import uiinventory
    		global aratabonusuri
    		if aratabonusuri == 0:
    			aratabonusuri = 1
    			exec 'uibonuspage.BonusBoardDialog().Show()'
    		else:
    			exec 'uibonuspage.BonusBoardDialog().Hide()'
    			aratabonusuri = 0

     

    inventorywindow.py button:

    Spoiler
    
    				{
    				"name" : "PaginaBonusuri",
    				"type" : "button",
    
    				"x" : 10,
    				"y" : 104 + 26 + 33,
    
    				"tooltip_text" : "Bonusuri",
    							
    				"default_image" : "locale/es/ui/bp1.tga",
    				"over_image" : "locale/es/ui/bp2.tga",
    				"down_image" : "locale/es/ui/bp2.tga",                    
    				},

     

    So. How i can make this board to hide when i press again the button ?

  6. Hello , i made a bar for buttons and i can't use buttons placed on bar , if i put buttons directly on inventory it works.

    screen:

    7m3dxg1.png

    If i put buttons directly on inventory it works. I think is a problem with inventory range or something because if i move buttons to left them works.

    There is full script:

    import uiScriptLocale
    import item
     
    EQUIPMENT_START_INDEX = 180
     
    window = {
        "name" : "InventoryWindow",
     
        ## 600 - (width + ¡Ë?A¡Ë¡þ¢®IAEA¡Ë¡þ¢®¢´I ¡§¡þIAI ¡ËOc¡Ë?i¢®¨úa 24 px)
        "x" : SCREEN_WIDTH - 176,
        "y" : SCREEN_HEIGHT - 37 - 571,
     
        "style" : ("movable", "float",),
     
        "width" : 176,
        "height" : 576,
     
        "children" :
        (
            ## Inventory, Equipment Slots
            {
            "name" : "board",
            "type" : "board",
    		"style" : ("attach", "float",),
            "x" : -37,
            "y" : 26,
     
            "width" : 37,
            "height" : 155,
    		"children" :
    			(
                    {
    				"name" : "teleporter_index",
    				"type" : "button",
    
    				"x" : 6,
    				"y" : 6,
    
    				"tooltip_text" : "Teleportare",
    							
    				"default_image" : "locale/es/ui/teleport1.tga",
    				"over_image" : "locale/es/ui/teleport2.tga",
    				"down_image" : "locale/es/ui/teleport2.tga",                    
    				},
    								{
    				"name" : "antiexp_index",
    				"type" : "button",
    
    				"x" : 6,
    				"y" : 39,
    
    				"tooltip_text" : "Anti Experienta",
    							
    				"default_image" : "locale/es/ui/inelexp1.tga",
    				"over_image" : "locale/es/ui/inelexp2.tga",
    				"down_image" : "locale/es/ui/inelexp2.tga",                    
    				},
    				{
    				"name" : "depozit_index",
    				"type" : "button",
    
    				"x" : 6,
    				"y" : 72,
    
    				"tooltip_text" : "Depozit",
    							
    				"default_image" : "locale/es/ui/depozit1.tga",
    				"over_image" : "locale/es/ui/depozit2.tga",
    				"down_image" : "locale/es/ui/depozit2.tga",                    
    				},
    				{
    				"name" : "tombola_button",
    				"type" : "button",
    
    				"x" : 6,
    				"y" : 105,
    
    				"tooltip_text" : "Tombola",
    							
    				"default_image" : "locale/es/ui/buton_tombola1.tga",
    				"over_image" : "locale/es/ui/buton_tombola2.tga",
    				"down_image" : "locale/es/ui/buton_tombola2.tga",                    
    				},	
    			),
    		},
            {
                "name" : "board",
                "type" : "board",
                "style" : ("attach",),
     
                "x" : 0,
                "y" : 0,
     
                "width" : 176,
                "height" : 576,
     
                "children" :
                (
                    ## Title
                    {
                        "name" : "TitleBar",
                        "type" : "titlebar",
                        "style" : ("attach",),
     
                        "x" : 8,
                        "y" : 7,
     
                        "width" : 166,
                        "color" : "yellow",
     
                        "children" :
                        (
                            { "name":"TitleName", "type":"text", "x":77, "y":3, "text":uiScriptLocale.INVENTORY_TITLE, "text_horizontal_align":"center" },
                        ),
                    },
     
                    ## Equipment Slot
                    {
                        "name" : "Equipment_Base",
                        "type" : "image",
     
                        "x" : 7,
                        "y" : 26,
     
                        "image" : "d:/ymir work/ui/equipment_bg_without_ring.tga",
     
                        "children" :
                        (
     
                            {
                                "name" : "EquipmentSlot",
                                "type" : "slot",
     
                                "x" : 3,
                                "y" : 3,
     
                                "width" : 150,
                                "height" : 176,
     
                                "slot" : (
                                            {"index":EQUIPMENT_START_INDEX+0, "x":39, "y":37, "width":32, "height":64},
                                            {"index":EQUIPMENT_START_INDEX+1, "x":39, "y":2, "width":32, "height":32},
                                            {"index":EQUIPMENT_START_INDEX+2, "x":39, "y":145, "width":32, "height":32},
                                            {"index":EQUIPMENT_START_INDEX+3, "x":75, "y":67, "width":32, "height":32},
                                            {"index":EQUIPMENT_START_INDEX+4, "x":3, "y":3, "width":32, "height":96},
                                            {"index":EQUIPMENT_START_INDEX+5, "x":114, "y":67, "width":32, "height":32},
                                            {"index":EQUIPMENT_START_INDEX+6, "x":114, "y":35, "width":32, "height":32},
                                            {"index":EQUIPMENT_START_INDEX+7, "x":2, "y":145, "width":32, "height":32},
                                            {"index":EQUIPMENT_START_INDEX+8, "x":75, "y":145, "width":32, "height":32},
                                            {"index":EQUIPMENT_START_INDEX+9, "x":114, "y":2, "width":32, "height":32},
                                            {"index":EQUIPMENT_START_INDEX+10, "x":75, "y":35, "width":32, "height":32},
                                            {"index":item.EQUIPMENT_BELT, "x":39, "y":106, "width":32, "height":32},
                                        ),
                            },
                            ## Dragon Soul Button
                            {
    							"name" : "DSSButton",
    							"type" : "button",
    
    							"x" : 114,
    							"y" : 107,
    
    							"tooltip_text" : "Deschide Alchimie",
    
    							"default_image" : "d:/ymir work/ui/dragonsoul/dss_inventory_button_01.tga",
    							"over_image" : "d:/ymir work/ui/dragonsoul/dss_inventory_button_02.tga",
    							"down_image" : "d:/ymir work/ui/dragonsoul/dss_inventory_button_03.tga",
                            },
    						## Offline Shop Button
    						{
    							"name" : "OfflineShopButton",
    							"type" : "button",
    
    							"x" : 77,
    							"y" : 109,
    
    							"tooltip_text" : uiScriptLocale.TASKBAR_OFFLINE_SHOP,
    
    							"default_image" : "locale/es/offlineshop/boton1.tga",
    							"over_image" : "locale/es/offlineshop/boton2.tga",
    							"down_image" : "locale/es/offlineshop/boton1.tga",
    						},							
                            ## MallButton
                            {
                                "name" : "MallButton",
                                "type" : "button",
     
                                "x" : 118,
                                "y" : 148,
     
                                "tooltip_text" : uiScriptLocale.MALL_TITLE,
     
                                "default_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_01.tga",
                                "over_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_02.tga",
                                "down_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_03.tga",
                            },  
    						{
    							"name" : "BancaYang",
    							"type" : "button",
    
    							"x" : 3,
    							"y" : 109,
    
    							"tooltip_text" : "Banca Yang",
    							
    							"default_image" : "locale/es/ui/banca_buton1.tga",
    							"over_image" : "locale/es/ui/banca_buton2.tga",
    							"down_image" : "locale/es/ui/banca_buton2.tga",                    
    						},
    
                            ## CostumeButton
                            {
                                "name" : "CostumeButton",
                                "type" : "button",
     
                                "x" : 78,
                                "y" : 5,
     
                                "tooltip_text" : uiScriptLocale.COSTUME_TITLE,
     
                                "default_image" : "d:/ymir work/ui/game/taskbar/costume_Button_01.tga",
                                "over_image" : "d:/ymir work/ui/game/taskbar/costume_Button_02.tga",
                                "down_image" : "d:/ymir work/ui/game/taskbar/costume_Button_03.tga",
                            },                      
                            {
                                "name" : "Equipment_Tab_01",
                                "type" : "radio_button",
     
                                "x" : 86,
                                "y" : 161,
     
                                "default_image" : "d:/ymir work/ui/game/windows/tab_button_small_01.sub",
                                "over_image" : "d:/ymir work/ui/game/windows/tab_button_small_02.sub",
                                "down_image" : "d:/ymir work/ui/game/windows/tab_button_small_03.sub",
     
                                "children" :
                                (
                                    {
                                        "name" : "Equipment_Tab_01_Print",
                                        "type" : "text",
     
                                        "x" : 0,
                                        "y" : 0,
     
                                        "all_align" : "center",
     
                                        "text" : "I",
                                    },
                                ),
                            },
                            {
                                "name" : "Equipment_Tab_02",
                                "type" : "radio_button",
     
                                "x" : 86 + 32,
                                "y" : 161,
     
                                "default_image" : "d:/ymir work/ui/game/windows/tab_button_small_01.sub",
                                "over_image" : "d:/ymir work/ui/game/windows/tab_button_small_02.sub",
                                "down_image" : "d:/ymir work/ui/game/windows/tab_button_small_03.sub",
     
                                "children" :
                                (
                                    {
                                        "name" : "Equipment_Tab_02_Print",
                                        "type" : "text",
     
                                        "x" : 0,
                                        "y" : 0,
     
                                        "all_align" : "center",
     
                                        "text" : "II",
                                    },
                                ),
                            },
     
                        ),
                    },
                    {
                        "name" : "Inventory_Tab_01",
                        "type" : "radio_button",
      
                        "x" : 7,
                        "y" : 33 + 180,
      
                        "default_image" : "d:/ymir work/ui/game/windows/tab_button_small_01.sub",
                        "over_image" : "d:/ymir work/ui/game/windows/tab_button_small_02.sub",
                        "down_image" : "d:/ymir work/ui/game/windows/tab_button_small_03.sub",
                        "tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_1,
      
                        "children" :
                        (
                            {
                                "name" : "Inventory_Tab_01_Print",
                                "type" : "text",
      
                                "x" : 0,
                                "y" : 0,
      
                                "all_align" : "center",
      
                                "text" : "I",
                            },
                        ),
                    },
                    {
                        "name" : "Inventory_Tab_02",
                        "type" : "radio_button",
      
                        "x" : 13 + 27,
                        "y" : 33 + 180,
      
                        "default_image" : "d:/ymir work/ui/game/windows/tab_button_small_01.sub",
                        "over_image" : "d:/ymir work/ui/game/windows/tab_button_small_02.sub",
                        "down_image" : "d:/ymir work/ui/game/windows/tab_button_small_03.sub",
                        "tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_2,
      
                        "children" :
                        (
                            {
                                "name" : "Inventory_Tab_02_Print",
                                "type" : "text",
      
                                "x" : 0,
                                "y" : 0,
      
                                "all_align" : "center",
      
                                "text" : "II",
                            },
                        ),
                    },
                    {
                        "name" : "Inventory_Tab_03",
                        "type" : "radio_button",
      
                        "x" : 13 + 57,
                        "y" : 33 + 180,
      
                        "default_image" : "d:/ymir work/ui/game/windows/tab_button_small_01.sub",
                        "over_image" : "d:/ymir work/ui/game/windows/tab_button_small_02.sub",
                        "down_image" : "d:/ymir work/ui/game/windows/tab_button_small_03.sub",
                        "tooltip_text" : "3.Inventar",
      
                        "children" :
                        (
                            {
                                "name" : "Inventory_Tab_03_Print",
                                "type" : "text",
      
                                "x" : 0,
                                "y" : 0,
      
                                "all_align" : "center",
      
                                "text" : "III",
                            },
                        ),
                    },
                    {
                        "name" : "Inventory_Tab_04",
                        "type" : "radio_button",
      
                        "x" : 13 + 87,
                        "y" : 33 + 180,
      
                        "default_image" : "d:/ymir work/ui/game/windows/tab_button_small_01.sub",
                        "over_image" : "d:/ymir work/ui/game/windows/tab_button_small_02.sub",
                        "down_image" : "d:/ymir work/ui/game/windows/tab_button_small_03.sub",
                        "tooltip_text" : "4.Inventar",
      
                        "children" :
                        (
                            {
                                "name" : "Inventory_Tab_04_Print",
                                "type" : "text",
      
                                "x" : 0,
                                "y" : 0,
      
                                "all_align" : "center",
      
                                "text" : "IV",
                            },
                        ),
                    },              
     
                    ## Item Slot
                    {
                        "name" : "ItemSlot",
                        "type" : "grid_table",
     
                        "x" : 8,
                        "y" : 246,
     
                        "start_index" : 0,
                        "x_count" : 5,
                        "y_count" : 9,
                        "x_step" : 32,
                        "y_step" : 32,
     
                        "image" : "d:/ymir work/ui/public/Slot_Base.sub"
                    },
     
    				## Print
    			#	{
    			#	"name" : "Switchbot",
    			#	"type" : "button",
    
    			#	"x" : 169,
    			#	"y" : 37,
    
    			#	"tooltip_text" : "Schimba bonus",
    							
    			#	"default_image" : "locale/es/ui/switcher1.tga",
    			#	"over_image" : "locale/es/ui/switcher2.tga",
    			#	"down_image" : "locale/es/ui/switcher2.tga",                    
    			#	},
    			#	{
    			#	"name" : "PaginaBonusuri",
    			#	"type" : "button",
    
    			#	"x" : 169,
    			#	"y" : 74,
    
    			#	"tooltip_text" : "Bonusuri",
    							
    			#	"default_image" : "locale/es/ui/bp1.tga",
    			#	"over_image" : "locale/es/ui/bp2.tga",
    			#	"down_image" : "locale/es/ui/bp2.tga",                    
    			#	},
    
    				{
    
    					"name":"Money_Slot",
    
    					"type":"button",
    
    
    
    					"x":37,
    
    					"y":28+14,
    
    
    
    					"horizontal_align":"center",
    
    					"vertical_align":"bottom",
    
    
    
    					"default_image" : "d:/ymir work/ui/public/parameter_slot_03.sub",
    
    					"over_image" : "d:/ymir work/ui/public/parameter_slot_03.sub",
    
    					"down_image" : "d:/ymir work/ui/public/parameter_slot_03.sub",
    
    
    
    					"children" :
    
    					(
    
    						{
    
    							"name":"Money_Icon",
    
    							"type":"image",
    
    
    
    							"x":-14,
    
    							"y":2,
    
    
    
    							"image":"d:/ymir work/ui/game/windows/money_icon.sub",
    
    						},
    
    
    
    						{
    
    							"name" : "Money",
    
    							"type" : "text",
    
    
    
    							"x" : 3,
    
    							"y" : 3,
    
    
    
    							"horizontal_align" : "right",
    
    							"text_horizontal_align" : "right",
    
    
    
    							"text" : "123456789",
    						},
    					),
    				},
    				{
    
    					"name":"Pct_Slot",
    
    					"type":"button",
    
    
    
    					"x":-48,
    
    					"y":28+14,
    
    
    
    					"horizontal_align":"center",
    
    					"vertical_align":"bottom",
    
    
    
    					"default_image" : "d:/ymir work/ui/public/parameter_slot_01.sub",
    
    					"over_image" : "d:/ymir work/ui/public/parameter_slot_01.sub",
    
    					"down_image" : "d:/ymir work/ui/public/parameter_slot_01.sub",
    
    
    
    					"children" :
    
    					(
    
    						{
    
    							"name":"Pct_Icon",
    
    							"type":"image",
    
    
    
    							"x":-14,
    
    							"y":2,
    
    
    
    							"image" : "locale/es/ui/puncte.sub",
    
    						},
    
    
    
    						{
    
    							"name" : "Pct",
    
    							"type" : "text",
    
    
    
    							"x" : 3,
    
    							"y" : 3,
    
    
    
    							"horizontal_align" : "right",
    
    							"text_horizontal_align" : "right",
    
    
    
    							"text" : "123456789 PCT",
    						},
    					),
    				},
    				{
    
    					"name":"Banca_Slot",
    
    					"type":"button",
    
    
    
    					"x":4,
    
    					"y":25,
    
    
    
    					"horizontal_align":"center",
    
    					"vertical_align":"bottom",
    
    
    
    					"default_image" : "locale/es/ui/banca.sub",
    
    					"over_image" : "locale/es/ui/banca.sub",
    
    					"down_image" : "locale/es/ui/banca.sub",
    
    
    
    					"children" :
    
    					(
    
    						{
    
    							"name":"Banca_Icon",
    
    							"type":"image",
    
    
    
    							"x":-14,
    
    							"y":2,
    
    
    
    							"image":"locale/es/ui/banca_sign.sub",
    
    						},
    
    
    
    						{
    
    							"name" : "Banca",
    
    							"type" : "text",
    
    
    
    							"x" : 3,
    
    							"y" : 3,
    
    
    
    							"horizontal_align" : "right",
    
    							"text_horizontal_align" : "right",
    
    
    
    							"text" : "123456789 Yang in Banca",
    						},
    					),
    				},
    			),
    		},
    	),
    }

     

  7. Hello!
    First of all this example:
    CH1: 1 3 4 5 21 23 24 25 26 41 43 44 45 61 62 63 64 65 66 67 68 69 70 71 72 73 81 103 104 105 107 108 109 110 111
    CH99: 113 114 118 119 120 121 122 123 124 125 126 127 128 181 182 183 193 206 207 212 213 215 216 217 218 240 250

    Good , think about if I want to transfer me with a portal from map 1 to map 21.
    Every time you will transfer from a map to other map with a portal you will see a loading screen.
    But , these maps are on same channel and same core so , how i can make the transfer like this function from dungeons d.new_jump(mapindex, xcoord, ycoord)?
    If we go in game source we can copy this function d.new_jump and remake it as pc.new_jump without this condition if pc.in_dungeon , this will jump peoples directly from a map to other map without loading screen if maps are on same channel and same core.
    So this is real question , how i can change function warp from portals to become pc.new_jump ?


    In short : I want to get rid of loading bar when peoples teleport , i want this bar to appear only when you move from ch1 map to ch99 map.

  8. Hello guys , i want to know how to make a new character like wolfman or berserker.

    I want to know what programs to use and how to do it.

    I know how to make the model but i don't know how to create new skill and character animations.

    (I can copy lycan files and make new model of this lycan but i don't know how to make new animations for attack , run and standing also i don't know how to make new skills)

    So there is any tutorial to create what is in ( ) ?

  9. sorry VegaS , forgot to mention cuz i was in a hurry... i'll edit .

    I didn't said this is my own tutorial or something , i just wanted to help others.

    11 hours ago, VegaS said:

    You copied my message from another forum..ohh gg xD

    There is much better:

    
    		import constInfo
    		if (constInfo.TableSkillButton(1)) == "Enable":
    			if player.GetStatus(player.LEVEL) < (constInfo.TableSkillButton(2)) and self.__IsSkillStat():
    				skillPlusButton.Show()
    			else:
    				skillPlusButton.Hide()
    		elif (constInfo.TableSkillButton(1)) == "Disable":
    			if self.__IsSkillStat():
    				skillPlusButton.Show()
    			else:
    				skillPlusButton.Hide()	

     

    
    def TableSkillButton(o):
    	i = {
    		1	:	"Enable", # Enable for active function , Disable for dezactivate.
    		2	:	100} # The maximum level to which button will be displayed
    		
    	if i.has_key(o):
    		return i[o]

     

     

     

    Yea VegaS is true , is your post from other forum . I was in hurry when i wrote. I'm sorry again , now is edited.

    • Love 1
  10. Do this:

    root/constInfo.py Put this:

    Spoiler
    
    DISABLE_SKILL_BUTTON = 1

     

    root/uiGameButton.py  Search this:

    Spoiler
    
    if self.__IsSkillStat():
    			skillPlusButton.Show()
    		else:
    			skillPlusButton.Hide()

    Replace with:

    Spoiler
    
    import constInfo
    		if constInfo.DISABLE_SKILL_BUTTON == 1:
    			skillPlusButton.Hide()
    		else:
    			if self.__IsSkillStat():
    				skillPlusButton.Show()
    			else:
    				skillPlusButton.Hide()

     

    [This tutorial was made by VegaS on other forum]

  11. Hello! I impelemented ingame raffle with inventory button but I got a bug and i can't solve it.
    When you login , first try of raffle works perfectly but when you try raffle second time , when you press button from inventory  ,it give you the last item you won from raffle.
    I think i know where is the bug but i can't solve it , cuz i dont know,  button from inventory uses this function: when  button begin , also button Start from raffle uses function: when info or button begin and this creating a conflict and raffle think that button from inventory is part of it.
    video says it all:
    https://www.youtube.com/watch?v=zw9v7JhSJU8&feature=youtu.be

    Quest:

    Spoiler

    quest tombola begin


        state start begin
            function tablica(vnum, pozycja, pozycja2)
                local itemy = {
                                {
                                    {71001, 1},
                                    {71084, 25},
                                    {71085, 25},
                                    {25040, 3},
                                    {27992, 2},
                                    {27993, 2},
                                    {27994, 2},
                                    {27987, 5},
                                    {72002, 1},
                                    {71027, 5},
                                    {71028, 5},
                                    {71029, 5},
                                    {71030, 5},
                                    {71036, 1},
                                    {50008, 15},
                                    {70021, 3},
                                    {71001, 1},
                                },
                                {
                                    {71001, 1},
                                    {71084, 25},
                                    {71085, 25},
                                    {25040, 3},
                                    {27992, 2},
                                    {27993, 2},
                                    {27994, 2},
                                    {27987, 5},
                                    {72002, 1},
                                    {71027, 5},
                                    {71028, 5},
                                    {71029, 5},
                                    {71030, 5},
                                    {71036, 1},
                                    {50008, 15},
                                    {70021, 3},
                                    {71001, 1},
                                }
                            }
                    return itemy[vnum][pozycja][pozycja2]
                end
                
            
            
            when login begin
                cmdchat("tombola "..q.getcurrentquestindex())
            end
            
            when letter begin
                    cmdchat("tombola_button "..q.getcurrentquestindex())
                end
        
            when info or button begin
                local losowo = number(1,2)
                local str = " "
                for i = 1,16 do
                    if i == 16 then
                        str = str..tombola.tablica(losowo, i, 1).."|"..tombola.tablica(losowo, i, 2)
                    else
                        str = str..tombola.tablica(losowo, i, 1).."|"..tombola.tablica(losowo, i, 2).."|"
                    end
                end
                cmdchat("OnPrepare"..str)
                cmdchat("openTombola")
                setskin(NOWINDOW)
            end
        
            when info or button begin
            local Puncte = mysql_query("SELECT puncte from player.player WHERE id="..pc.get_player_id().." LIMIT 1;")[1][1]
                local losowo = number(1,2)
            if Puncte >= 10 then
                local str = " "
                for i = 1,16 do
                    if i == 16 then
                        str = str..tombola.tablica(losowo, i, 1).."|"..tombola.tablica(losowo, i, 2)
                    else
                        str = str..tombola.tablica(losowo, i, 1).."|"..tombola.tablica(losowo, i, 2).."|"
                    end
                end
                cmdchat("OnPrepare"..str)
                if pc.get_empty_inventory_count() < 3 then
                    syschat("Nu puteti juca, pentru cã nu aveti suficient spatiu în inventar.")
                    return
                end
                cmdchat("get_input_start")
                local czynnosc = input(cmdchat("get_input_value"))
                cmdchat("get_input_end")
                if czynnosc == "tombola|begin" then
                    pc.setqf("slot", number(1, 16))
                    cmdchat("OnRun "..number(2,3)*16+pc.getqf("slot").."|5")
                elseif czynnosc == "tombola|end" then
            local Puncte = mysql_query("SELECT puncte from player.player WHERE id="..pc.get_player_id().." LIMIT 1;")[1][1]
            mysql_query("UPDATE player.player SET puncte = puncte-10 WHERE id="..pc.get_player_id().." LIMIT 1;")
            cmdchat("Pct "..Puncte)  
            cmdchat("Pct "..Puncte)  
                    syschat("Felicitãri! Ai primit"..tombola.tablica(losowo, pc.getqf("slot")+1, 2).."x "..item_name(tombola.tablica(losowo, pc.getqf("slot")+1, 1)).." ca o recompensã în Tombola!")
                    pc.give_item2(tombola.tablica(losowo, pc.getqf("slot")+1, 1), tombola.tablica(losowo, pc.getqf("slot")+1, 2))
            cmdchat("Pct "..Puncte)
                end
    else
    say("Ai nevoie de 10 Puncte pentru a utiliza roata norocului.")

    cmdchat("Pct "..Puncte)
    end
    end
    end 
    end

    uitombola:

    Spoiler

    import app


    import constInfo
    import ui
    import uiToolTip
    import item
    import locale
    import player
    import grp
    import time
    import event

    class TombolaWindow(ui.BoardWithTitleBar):
        
        def __init__(self):
            ui.BoardWithTitleBar.__init__(self)
            self.__BuildWindow()
            
        def __del__(self):
            ui.BoardWithTitleBar.__del__(self)
        
        def __BuildWindow(self):
            
            self.xOpen = 0
            self.yOpen = 0
            
            self.speedDown = 5
            self.timeDiff = 0.1
            
            self.tooltipItem = None
            
            self.animate = FALSE
            self.blink = FALSE
            
            self.blinkTimes = 6
            self.blinkLast = 0
            
            self.position = 1
            self.toPosition = 16
            self.lastClock = 0
            
            self.SetSize(341, 364)
            self.AddFlag("float")
            self.AddFlag("movable")
            self.SetTitleName("Ruleta Destinului")
            
            image = ui.ImageBox()
            image.SetParent(self)
            image.LoadImage("locale/es/ui/tombola/background.tga")
            image.SetPosition(6, 29)
            image.Show()
            self.background = image
            
            select = ui.ImageBox()
            select.SetParent(self.background)
            select.SetPosition(0, 0)
            select.LoadImage("locale/es/ui/tombola/1.tga")
            select.Hide()
            self.select = select
            
            button = ui.Button()
            button.SetParent(self.background)
            button.SetPosition(125, 124)
            button.SetUpVisual("locale/es/ui/tombola/button.tga")
            button.SetOverVisual("locale/es/ui/tombola/button_hover.tga")
            button.SetDownVisual("locale/es/ui/tombola/button_down.tga")
            button.SetEvent(ui.__mem_func__(self.OnButtonClick))
            button.Show()
            self.run = button
            
            self.slots = [
                self.__CreateSlot(1, 161 - 5, 53 - 4),
                self.__CreateSlot(2, 207 - 5, 63 - 4),
                self.__CreateSlot(3, 248 - 5, 93 - 4),
                self.__CreateSlot(4, 277 - 5, 135 - 4),
                self.__CreateSlot(5, 290 - 5, 182 - 4),
                self.__CreateSlot(6, 277 - 5, 228 - 4),
                self.__CreateSlot(7, 248 - 5, 271 - 4),
                self.__CreateSlot(8, 207 - 5, 298 - 4),
                self.__CreateSlot(9, 160 - 5, 307 - 4),
                self.__CreateSlot(10, 114 - 5, 296 - 4),
                self.__CreateSlot(11, 72 - 5, 269 - 4),
                self.__CreateSlot(12, 44 - 5, 229 - 4),
                self.__CreateSlot(13, 30 - 5, 183 - 4),
                self.__CreateSlot(14, 41 - 5, 133 - 4),
                self.__CreateSlot(15, 70 - 5, 92 - 4),
                self.__CreateSlot(16, 112 - 5, 63 - 4)
            ]
            
            self.items = {}
            
        def __CreateSlot(self, number, x, y):
            grid = ui.GridSlotWindow()
            grid.SetParent(self)
            grid.SetPosition(x, y)
            grid.ArrangeSlot(number, 1, 1, 32, 32, 0, 0)
            grid.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
            grid.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
            grid.RefreshSlot()
            grid.Show()
            
            return grid
        
        def OverInItem(self, slotIndex):
            if slotIndex < 1 or slotIndex > 16:
                return
            
            self.tooltipItem = uiToolTip.ItemToolTip()
            self.tooltipItem.AddItemData(self.items[slotIndex - 1], 0, 0)
            self.tooltipItem.Show()

        def OverOutItem(self):
            if self.tooltipItem:
                self.tooltipItem.HideToolTip()
                
        def OnButtonClick(self):
            self.run.Disable()
            self.run.Down()
            constInfo.VID = "tombola|begin"
            event.QuestButtonClick(constInfo.TOMBOLA)
        
        def OnPrepare(self, items):
            items = items.split("|")
            
            j = 0
            for i in range(0, 32, 2):
                self.slots[j].SetItemSlot(j + 1, int(items), int(items[i + 1]))
                self.items[j] = int(items)
                j += 1
            
        def OnRun(self, data):
            data = data.split("|")
            
            self.toPosition = int(data[0])
            self.speedDown = int(data[1])
            
            self.blinkTimes = 6
            self.blinkLast = 0
            
            self.position = 1
            self.animate = TRUE
            self.blink = FALSE
            self.timeDiff = 0.1
            
            self.lastClock = app.GetTime()
            
        def OnUpdate(self):
            if self.animate == TRUE:
                if (app.GetTime() - self.lastClock) >= self.timeDiff:
                    self.lastClock = app.GetTime()
                    
                    self.toPosition -= 1
                    
                    if self.toPosition <= self.speedDown:
                        self.timeDiff += 0.1
                    
                    self.position += 1
                    if self.position == 17:
                        self.position = 1
                    
                    if not self.select.IsShow():
                        self.select.Show()
                    
                    self.select.LoadImage("locale/es/ui/tombola/" + str(self.position) + ".tga")
                    
                    if self.toPosition == 0:
                        self.animate = FALSE
                        self.blink = TRUE
                        
                        self.run.Enable()
                        self.run.SetUp()
                        
                        constInfo.VID = "tombola|end"
                        event.QuestButtonClick(constInfo.TOMBOLA)
                        
            if self.blink == TRUE and (app.GetTime() - self.blinkLast) >= 0.3:
                if self.blinkTimes > 0:
                    if self.blinkTimes % 2:
                        self.select.Hide()
                    else:
                        self.select.Show()
                    self.blinkTimes -= 1
                else:    
                    self.blink = FALSE
                    self.blinkTimes = 6
                    self.blinkLast = 0
                    self.select.Hide()
                    self.select.LoadImage("locale/es/ui/tombola/1.tga")
                    
                self.blinkLast = app.GetTime()
                
            (x, y, z) = player.GetMainCharacterPosition()
                
        def Open(self):
            if not self.IsShow():
                self.Show()
                (self.xOpen, self.yOpen, z) = player.GetMainCharacterPosition()
                
        def Close(self):
            if self.IsShow():
                self.Hide()
            
        def OnPressEscapeKey(self):
            self.Close()
            return TRUE

        

    Game:http://pastebin.com/e9Ytb8RG
    uiinventory:http://pastebin.com/fDPn84Xa
    inventorywindow: http://pastebin.com/1M0v9gcG

  12. Hello! I impelemented ingame raffle with inventory button but I got a bug and i can't solve it.
    When you login , first try of raffle works perfectly but when you try raffle second time , when you press button from inventory  ,it give you the last item you won from raffle.
    I think i know where is the bug but i can't solve it , cuz i dont know,  button from inventory uses this function: when  button begin , also button Start from raffle uses function: when info or button begin and this creating a conflict and raffle think that button from inventory is part of it.
    video says it all:
    [bbvideo=560,315]https://www.youtube.com/watch?v=zw9v7JhSJU8&feature=youtu.be[/bbvideo]

    Quest:

    [python]quest tombola begin


        state start begin
            function tablica(vnum, pozycja, pozycja2)
                local itemy = {
                                {
                                    {71001, 1},
                                    {71084, 25},
                                    {71085, 25},
                                    {25040, 3},
                                    {27992, 2},
                                    {27993, 2},
                                    {27994, 2},
                                    {27987, 5},
                                    {72002, 1},
                                    {71027, 5},
                                    {71028, 5},
                                    {71029, 5},
                                    {71030, 5},
                                    {71036, 1},
                                    {50008, 15},
                                    {70021, 3},
                                    {71001, 1},
                                },
                                {
                                    {71001, 1},
                                    {71084, 25},
                                    {71085, 25},
                                    {25040, 3},
                                    {27992, 2},
                                    {27993, 2},
                                    {27994, 2},
                                    {27987, 5},
                                    {72002, 1},
                                    {71027, 5},
                                    {71028, 5},
                                    {71029, 5},
                                    {71030, 5},
                                    {71036, 1},
                                    {50008, 15},
                                    {70021, 3},
                                    {71001, 1},
                                }
                            }
                    return itemy[vnum][pozycja][pozycja2]
                end
                
            
            
            when login begin
                cmdchat("tombola "..q.getcurrentquestindex())
            end
            
            when letter begin
                    cmdchat("tombola_button "..q.getcurrentquestindex())
                end
        
            when info or button begin
                local losowo = number(1,2)
                local str = " "
                for i = 1,16 do
                    if i == 16 then
                        str = str..tombola.tablica(losowo, i, 1).."|"..tombola.tablica(losowo, i, 2)
                    else
                        str = str..tombola.tablica(losowo, i, 1).."|"..tombola.tablica(losowo, i, 2).."|"
                    end
                end
                cmdchat("OnPrepare"..str)
                cmdchat("openTombola")
                setskin(NOWINDOW)
            end
        
            when info or button begin
            local Puncte = mysql_query("SELECT puncte from player.player WHERE id="..pc.get_player_id().." LIMIT 1;")[1][1]
                local losowo = number(1,2)
            if Puncte >= 10 then
                local str = " "
                for i = 1,16 do
                    if i == 16 then
                        str = str..tombola.tablica(losowo, i, 1).."|"..tombola.tablica(losowo, i, 2)
                    else
                        str = str..tombola.tablica(losowo, i, 1).."|"..tombola.tablica(losowo, i, 2).."|"
                    end
                end
                cmdchat("OnPrepare"..str)
                if pc.get_empty_inventory_count() < 3 then
                    syschat("Nu puteti juca, pentru cã nu aveti suficient spatiu în inventar.")
                    return
                end
                cmdchat("get_input_start")
                local czynnosc = input(cmdchat("get_input_value"))
                cmdchat("get_input_end")
                if czynnosc == "tombola|begin" then
                    pc.setqf("slot", number(1, 16))
                    cmdchat("OnRun "..number(2,3)*16+pc.getqf("slot").."|5")
                elseif czynnosc == "tombola|end" then
            local Puncte = mysql_query("SELECT puncte from player.player WHERE id="..pc.get_player_id().." LIMIT 1;")[1][1]
            mysql_query("UPDATE player.player SET puncte = puncte-10 WHERE id="..pc.get_player_id().." LIMIT 1;")
            cmdchat("Pct "..Puncte)  
            cmdchat("Pct "..Puncte)  
                    syschat("Felicitãri! Ai primit"..tombola.tablica(losowo, pc.getqf("slot")+1, 2).."x "..item_name(tombola.tablica(losowo, pc.getqf("slot")+1, 1)).." ca o recompensã în Tombola!")
                    pc.give_item2(tombola.tablica(losowo, pc.getqf("slot")+1, 1), tombola.tablica(losowo, pc.getqf("slot")+1, 2))
            cmdchat("Pct "..Puncte)
                end
    else
    say("Ai nevoie de 10 Puncte pentru a utiliza roata norocului.")

    cmdchat("Pct "..Puncte)
    end
    end
    end 
    end[/python]

    uitombola:

    [python]import app


    import constInfo
    import ui
    import uiToolTip
    import item
    import locale
    import player
    import grp
    import time
    import event

    class TombolaWindow(ui.BoardWithTitleBar):
        
        def __init__(self):
            ui.BoardWithTitleBar.__init__(self)
            self.__BuildWindow()
            
        def __del__(self):
            ui.BoardWithTitleBar.__del__(self)
        
        def __BuildWindow(self):
            
            self.xOpen = 0
            self.yOpen = 0
            
            self.speedDown = 5
            self.timeDiff = 0.1
            
            self.tooltipItem = None
            
            self.animate = FALSE
            self.blink = FALSE
            
            self.blinkTimes = 6
            self.blinkLast = 0
            
            self.position = 1
            self.toPosition = 16
            self.lastClock = 0
            
            self.SetSize(341, 364)
            self.AddFlag("float")
            self.AddFlag("movable")
            self.SetTitleName("Ruleta Destinului")
            
            image = ui.ImageBox()
            image.SetParent(self)
            image.LoadImage("locale/es/ui/tombola/background.tga")
            image.SetPosition(6, 29)
            image.Show()
            self.background = image
            
            select = ui.ImageBox()
            select.SetParent(self.background)
            select.SetPosition(0, 0)
            select.LoadImage("locale/es/ui/tombola/1.tga")
            select.Hide()
            self.select = select
            
            button = ui.Button()
            button.SetParent(self.background)
            button.SetPosition(125, 124)
            button.SetUpVisual("locale/es/ui/tombola/button.tga")
            button.SetOverVisual("locale/es/ui/tombola/button_hover.tga")
            button.SetDownVisual("locale/es/ui/tombola/button_down.tga")
            button.SetEvent(ui.__mem_func__(self.OnButtonClick))
            button.Show()
            self.run = button
            
            self.slots = [
                self.__CreateSlot(1, 161 - 5, 53 - 4),
                self.__CreateSlot(2, 207 - 5, 63 - 4),
                self.__CreateSlot(3, 248 - 5, 93 - 4),
                self.__CreateSlot(4, 277 - 5, 135 - 4),
                self.__CreateSlot(5, 290 - 5, 182 - 4),
                self.__CreateSlot(6, 277 - 5, 228 - 4),
                self.__CreateSlot(7, 248 - 5, 271 - 4),
                self.__CreateSlot(8, 207 - 5, 298 - 4),
                self.__CreateSlot(9, 160 - 5, 307 - 4),
                self.__CreateSlot(10, 114 - 5, 296 - 4),
                self.__CreateSlot(11, 72 - 5, 269 - 4),
                self.__CreateSlot(12, 44 - 5, 229 - 4),
                self.__CreateSlot(13, 30 - 5, 183 - 4),
                self.__CreateSlot(14, 41 - 5, 133 - 4),
                self.__CreateSlot(15, 70 - 5, 92 - 4),
                self.__CreateSlot(16, 112 - 5, 63 - 4)
            ]
            
            self.items = {}
            
        def __CreateSlot(self, number, x, y):
            grid = ui.GridSlotWindow()
            grid.SetParent(self)
            grid.SetPosition(x, y)
            grid.ArrangeSlot(number, 1, 1, 32, 32, 0, 0)
            grid.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
            grid.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
            grid.RefreshSlot()
            grid.Show()
            
            return grid
        
        def OverInItem(self, slotIndex):
            if slotIndex < 1 or slotIndex > 16:
                return
            
            self.tooltipItem = uiToolTip.ItemToolTip()
            self.tooltipItem.AddItemData(self.items[slotIndex - 1], 0, 0)
            self.tooltipItem.Show()

        def OverOutItem(self):
            if self.tooltipItem:
                self.tooltipItem.HideToolTip()
                
        def OnButtonClick(self):
            self.run.Disable()
            self.run.Down()
            constInfo.VID = "tombola|begin"
            event.QuestButtonClick(constInfo.TOMBOLA)
        
        def OnPrepare(self, items):
            items = items.split("|")
            
            j = 0
            for i in range(0, 32, 2):
                self.slots[j].SetItemSlot(j + 1, int(items), int(items[i + 1]))
                self.items[j] = int(items)
                j += 1
            
        def OnRun(self, data):
            data = data.split("|")
            
            self.toPosition = int(data[0])
            self.speedDown = int(data[1])
            
            self.blinkTimes = 6
            self.blinkLast = 0
            
            self.position = 1
            self.animate = TRUE
            self.blink = FALSE
            self.timeDiff = 0.1
            
            self.lastClock = app.GetTime()
            
        def OnUpdate(self):
            if self.animate == TRUE:
                if (app.GetTime() - self.lastClock) >= self.timeDiff:
                    self.lastClock = app.GetTime()
                    
                    self.toPosition -= 1
                    
                    if self.toPosition <= self.speedDown:
                        self.timeDiff += 0.1
                    
                    self.position += 1
                    if self.position == 17:
                        self.position = 1
                    
                    if not self.select.IsShow():
                        self.select.Show()
                    
                    self.select.LoadImage("locale/es/ui/tombola/" + str(self.position) + ".tga")
                    
                    if self.toPosition == 0:
                        self.animate = FALSE
                        self.blink = TRUE
                        
                        self.run.Enable()
                        self.run.SetUp()
                        
                        constInfo.VID = "tombola|end"
                        event.QuestButtonClick(constInfo.TOMBOLA)
                        
            if self.blink == TRUE and (app.GetTime() - self.blinkLast) >= 0.3:
                if self.blinkTimes > 0:
                    if self.blinkTimes % 2:
                        self.select.Hide()
                    else:
                        self.select.Show()
                    self.blinkTimes -= 1
                else:    
                    self.blink = FALSE
                    self.blinkTimes = 6
                    self.blinkLast = 0
                    self.select.Hide()
                    self.select.LoadImage("locale/es/ui/tombola/1.tga")
                    
                self.blinkLast = app.GetTime()
                
            (x, y, z) = player.GetMainCharacterPosition()
                
        def Open(self):
            if not self.IsShow():
                self.Show()
                (self.xOpen, self.yOpen, z) = player.GetMainCharacterPosition()
                
        def Close(self):
            if self.IsShow():
                self.Hide()
            
        def OnPressEscapeKey(self):
            self.Close()
            return TRUE[/python]

    Game:[python]http://pastebin.com/e9Ytb8RG[/python]
    uiinventory:[python]http://pastebin.com/fDPn84Xa[/python]
    inventorywindow: [python]http://pastebin.com/1M0v9gcG[/python]

  13. Hello! I impelemented ingame raffle with inventory button but I got a bug and i can't solve it.
    When you login , first try of raffle works perfectly but when you try raffle second time , when you press button from inventory  ,it give you the last item you won from raffle.
    I think i know where is the bug but i can't solve it , cuz i dont know,  button from inventory uses this function: when  button begin , also button Start from raffle uses function: when info or button begin and this creating a conflict and raffle think that button from inventory is part of it.
    video says it all:
    [bbvideo=560,315]https://www.youtube.com/watch?v=zw9v7JhSJU8&feature=youtu.be[/bbvideo]

    Quest:

    [python]quest tombola begin


        state start begin
            function tablica(vnum, pozycja, pozycja2)
                local itemy = {
                                {
                                    {71001, 1},
                                    {71084, 25},
                                    {71085, 25},
                                    {25040, 3},
                                    {27992, 2},
                                    {27993, 2},
                                    {27994, 2},
                                    {27987, 5},
                                    {72002, 1},
                                    {71027, 5},
                                    {71028, 5},
                                    {71029, 5},
                                    {71030, 5},
                                    {71036, 1},
                                    {50008, 15},
                                    {70021, 3},
                                    {71001, 1},
                                },
                                {
                                    {71001, 1},
                                    {71084, 25},
                                    {71085, 25},
                                    {25040, 3},
                                    {27992, 2},
                                    {27993, 2},
                                    {27994, 2},
                                    {27987, 5},
                                    {72002, 1},
                                    {71027, 5},
                                    {71028, 5},
                                    {71029, 5},
                                    {71030, 5},
                                    {71036, 1},
                                    {50008, 15},
                                    {70021, 3},
                                    {71001, 1},
                                }
                            }
                    return itemy[vnum][pozycja][pozycja2]
                end
                
            
            
            when login begin
                cmdchat("tombola "..q.getcurrentquestindex())
            end
            
            when letter begin
                    cmdchat("tombola_button "..q.getcurrentquestindex())
                end
        
            when info or button begin
                local losowo = number(1,2)
                local str = " "
                for i = 1,16 do
                    if i == 16 then
                        str = str..tombola.tablica(losowo, i, 1).."|"..tombola.tablica(losowo, i, 2)
                    else
                        str = str..tombola.tablica(losowo, i, 1).."|"..tombola.tablica(losowo, i, 2).."|"
                    end
                end
                cmdchat("OnPrepare"..str)
                cmdchat("openTombola")
                setskin(NOWINDOW)
            end
        
            when info or button begin
            local Puncte = mysql_query("SELECT puncte from player.player WHERE id="..pc.get_player_id().." LIMIT 1;")[1][1]
                local losowo = number(1,2)
            if Puncte >= 10 then
                local str = " "
                for i = 1,16 do
                    if i == 16 then
                        str = str..tombola.tablica(losowo, i, 1).."|"..tombola.tablica(losowo, i, 2)
                    else
                        str = str..tombola.tablica(losowo, i, 1).."|"..tombola.tablica(losowo, i, 2).."|"
                    end
                end
                cmdchat("OnPrepare"..str)
                if pc.get_empty_inventory_count() < 3 then
                    syschat("Nu puteti juca, pentru cã nu aveti suficient spatiu în inventar.")
                    return
                end
                cmdchat("get_input_start")
                local czynnosc = input(cmdchat("get_input_value"))
                cmdchat("get_input_end")
                if czynnosc == "tombola|begin" then
                    pc.setqf("slot", number(1, 16))
                    cmdchat("OnRun "..number(2,3)*16+pc.getqf("slot").."|5")
                elseif czynnosc == "tombola|end" then
            local Puncte = mysql_query("SELECT puncte from player.player WHERE id="..pc.get_player_id().." LIMIT 1;")[1][1]
            mysql_query("UPDATE player.player SET puncte = puncte-10 WHERE id="..pc.get_player_id().." LIMIT 1;")
            cmdchat("Pct "..Puncte)  
            cmdchat("Pct "..Puncte)  
                    syschat("Felicitãri! Ai primit"..tombola.tablica(losowo, pc.getqf("slot")+1, 2).."x "..item_name(tombola.tablica(losowo, pc.getqf("slot")+1, 1)).." ca o recompensã în Tombola!")
                    pc.give_item2(tombola.tablica(losowo, pc.getqf("slot")+1, 1), tombola.tablica(losowo, pc.getqf("slot")+1, 2))
            cmdchat("Pct "..Puncte)
                end
    else
    say("Ai nevoie de 10 Puncte pentru a utiliza roata norocului.")

    cmdchat("Pct "..Puncte)
    end
    end
    end 
    end[/python]

    uitombola:

    [python]import app


    import constInfo
    import ui
    import uiToolTip
    import item
    import locale
    import player
    import grp
    import time
    import event

    class TombolaWindow(ui.BoardWithTitleBar):
        
        def __init__(self):
            ui.BoardWithTitleBar.__init__(self)
            self.__BuildWindow()
            
        def __del__(self):
            ui.BoardWithTitleBar.__del__(self)
        
        def __BuildWindow(self):
            
            self.xOpen = 0
            self.yOpen = 0
            
            self.speedDown = 5
            self.timeDiff = 0.1
            
            self.tooltipItem = None
            
            self.animate = FALSE
            self.blink = FALSE
            
            self.blinkTimes = 6
            self.blinkLast = 0
            
            self.position = 1
            self.toPosition = 16
            self.lastClock = 0
            
            self.SetSize(341, 364)
            self.AddFlag("float")
            self.AddFlag("movable")
            self.SetTitleName("Ruleta Destinului")
            
            image = ui.ImageBox()
            image.SetParent(self)
            image.LoadImage("locale/es/ui/tombola/background.tga")
            image.SetPosition(6, 29)
            image.Show()
            self.background = image
            
            select = ui.ImageBox()
            select.SetParent(self.background)
            select.SetPosition(0, 0)
            select.LoadImage("locale/es/ui/tombola/1.tga")
            select.Hide()
            self.select = select
            
            button = ui.Button()
            button.SetParent(self.background)
            button.SetPosition(125, 124)
            button.SetUpVisual("locale/es/ui/tombola/button.tga")
            button.SetOverVisual("locale/es/ui/tombola/button_hover.tga")
            button.SetDownVisual("locale/es/ui/tombola/button_down.tga")
            button.SetEvent(ui.__mem_func__(self.OnButtonClick))
            button.Show()
            self.run = button
            
            self.slots = [
                self.__CreateSlot(1, 161 - 5, 53 - 4),
                self.__CreateSlot(2, 207 - 5, 63 - 4),
                self.__CreateSlot(3, 248 - 5, 93 - 4),
                self.__CreateSlot(4, 277 - 5, 135 - 4),
                self.__CreateSlot(5, 290 - 5, 182 - 4),
                self.__CreateSlot(6, 277 - 5, 228 - 4),
                self.__CreateSlot(7, 248 - 5, 271 - 4),
                self.__CreateSlot(8, 207 - 5, 298 - 4),
                self.__CreateSlot(9, 160 - 5, 307 - 4),
                self.__CreateSlot(10, 114 - 5, 296 - 4),
                self.__CreateSlot(11, 72 - 5, 269 - 4),
                self.__CreateSlot(12, 44 - 5, 229 - 4),
                self.__CreateSlot(13, 30 - 5, 183 - 4),
                self.__CreateSlot(14, 41 - 5, 133 - 4),
                self.__CreateSlot(15, 70 - 5, 92 - 4),
                self.__CreateSlot(16, 112 - 5, 63 - 4)
            ]
            
            self.items = {}
            
        def __CreateSlot(self, number, x, y):
            grid = ui.GridSlotWindow()
            grid.SetParent(self)
            grid.SetPosition(x, y)
            grid.ArrangeSlot(number, 1, 1, 32, 32, 0, 0)
            grid.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
            grid.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
            grid.RefreshSlot()
            grid.Show()
            
            return grid
        
        def OverInItem(self, slotIndex):
            if slotIndex < 1 or slotIndex > 16:
                return
            
            self.tooltipItem = uiToolTip.ItemToolTip()
            self.tooltipItem.AddItemData(self.items[slotIndex - 1], 0, 0)
            self.tooltipItem.Show()

        def OverOutItem(self):
            if self.tooltipItem:
                self.tooltipItem.HideToolTip()
                
        def OnButtonClick(self):
            self.run.Disable()
            self.run.Down()
            constInfo.VID = "tombola|begin"
            event.QuestButtonClick(constInfo.TOMBOLA)
        
        def OnPrepare(self, items):
            items = items.split("|")
            
            j = 0
            for i in range(0, 32, 2):
                self.slots[j].SetItemSlot(j + 1, int(items), int(items[i + 1]))
                self.items[j] = int(items)
                j += 1
            
        def OnRun(self, data):
            data = data.split("|")
            
            self.toPosition = int(data[0])
            self.speedDown = int(data[1])
            
            self.blinkTimes = 6
            self.blinkLast = 0
            
            self.position = 1
            self.animate = TRUE
            self.blink = FALSE
            self.timeDiff = 0.1
            
            self.lastClock = app.GetTime()
            
        def OnUpdate(self):
            if self.animate == TRUE:
                if (app.GetTime() - self.lastClock) >= self.timeDiff:
                    self.lastClock = app.GetTime()
                    
                    self.toPosition -= 1
                    
                    if self.toPosition <= self.speedDown:
                        self.timeDiff += 0.1
                    
                    self.position += 1
                    if self.position == 17:
                        self.position = 1
                    
                    if not self.select.IsShow():
                        self.select.Show()
                    
                    self.select.LoadImage("locale/es/ui/tombola/" + str(self.position) + ".tga")
                    
                    if self.toPosition == 0:
                        self.animate = FALSE
                        self.blink = TRUE
                        
                        self.run.Enable()
                        self.run.SetUp()
                        
                        constInfo.VID = "tombola|end"
                        event.QuestButtonClick(constInfo.TOMBOLA)
                        
            if self.blink == TRUE and (app.GetTime() - self.blinkLast) >= 0.3:
                if self.blinkTimes > 0:
                    if self.blinkTimes % 2:
                        self.select.Hide()
                    else:
                        self.select.Show()
                    self.blinkTimes -= 1
                else:    
                    self.blink = FALSE
                    self.blinkTimes = 6
                    self.blinkLast = 0
                    self.select.Hide()
                    self.select.LoadImage("locale/es/ui/tombola/1.tga")
                    
                self.blinkLast = app.GetTime()
                
            (x, y, z) = player.GetMainCharacterPosition()
                
        def Open(self):
            if not self.IsShow():
                self.Show()
                (self.xOpen, self.yOpen, z) = player.GetMainCharacterPosition()
                
        def Close(self):
            if self.IsShow():
                self.Hide()
            
        def OnPressEscapeKey(self):
            self.Close()
            return TRUE[/python]

    Game:[python]http://pastebin.com/e9Ytb8RG[/python]
    uiinventory:[python]http://pastebin.com/fDPn84Xa[/python]
    inventorywindow: [python]http://pastebin.com/1M0v9gcG[/python]

×
×
  • 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.