Jump to content

alberto2010

Member
  • Posts

    29
  • Joined

  • Last visited

  • Feedback

    0%

Everything 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 , there is any python automatic dragon soul refine? Can't find anything about that and i saw in many clients that they have automatic refine.
  3. Is there any way to make this one to work with a no-ip dns if i have a dynamic ip ?
  4. Hello , How I can increase mob drop level range limit ? right now it is like -+10 levels for each boss. EX: Mob 2598 has level 91 , If i kill him when my char has level 100 I get drop but if I kill him when char is level 101-105 , i don't get anything , There is a way to increase mob drop level range limit?
  5. 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
  6. 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
  7. Hello , if i try to close offline shop when my inventory is full , items are deleted. items are deleted only when inventory is full . i attached my offlineshop_manager.cpp I hope some1 can help me with that. offlineshop_manager.cpp (fixed , i just rewrote some functions as quest.lua and is fine)
  8. 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
  9. Hello guys , any1 know how to add a limit of how many players can be online on a channel ?
  10. Hello guys , there is a way to make monsters to don't disappear if you ride a mount and you have big speed?
  11. Hello , any1 know how to make a quest to work same as Compass for Metin Stones item ? I want to use this quest to make a button in inventory to find stones. (In other words i want this compass for metin stones directly in inventory.)
  12. 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 inside uiinventory (just bonus page scripts): inventorywindow.py button: So. How i can make this board to hide when i press again the button ?
  13. 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: 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", }, ), }, ), }, ), }
  14. 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.
  15. 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 ( ) ?
  16. 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. Yea VegaS is true , is your post from other forum . I was in hurry when i wrote. I'm sorry again , now is edited.
  17. Do this: root/constInfo.py Put this: root/uiGameButton.py Search this: Replace with: [This tutorial was made by VegaS on other forum]
  18. Pictures say it all: This bug appear at first log in after you created your character and first quest you run from game text don't disappear after you close it.
  19. Pictures say it all: This bug appear at first log in after you created your character and first quest you run from game text don't disappear after you close it.
  20. Pictures say it all: This bug appear at first log in after you created your character and first quest you run from game text don't disappear after you close it.
  21. 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: [Hidden Content] Quest: uitombola: Game:[Hidden Content] uiinventory:[Hidden Content] inventorywindow: [Hidden Content]
  22. 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][Hidden Content]] 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][Hidden Content]] uiinventory:[python][Hidden Content]] inventorywindow: [python][Hidden Content]]
  23. 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][Hidden Content]] 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][Hidden Content]] uiinventory:[python][Hidden Content]] inventorywindow: [python][Hidden Content]]
×
×
  • 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.