Jump to content
Sign in to follow this  
argeus99

Mision Torre Demonios

Recommended Posts

Buen dia chicos

 

Alguien podria compartir la mision de torre con la opcion de volver si a uno de los miembros de la party se crashea? ya que actualmente si uno de ellos se desconecta al reloguearse queda por fuera de la dungeon sin la posibilidad de regresar al piso donde estan los demás miembros de la party

Encontré en dev unas funciones q un user creo pero desconozco como implementarle en torre demonios

Debes iniciar sesión para ver el contenido del enlace en esta publicación.

 

Mil gracias

Share this post


Link to post
Share on other sites
En 20/2/2022 a las 19:02, argeus99 dijo:

Buen dia chicos

 

Alguien podria compartir la mision de torre con la opcion de volver si a uno de los miembros de la party se crashea? ya que actualmente si uno de ellos se desconecta al reloguearse queda por fuera de la dungeon sin la posibilidad de regresar al piso donde estan los demás miembros de la party

Encontré en dev unas funciones q un user creo pero desconozco como implementarle en torre demonios

Debes iniciar sesión para ver el contenido del enlace en esta publicación.

 

Mil gracias

No se si usarás la versión que yo estoy testeando, pero eso da muchos problemas ese sistema, pero bueno, ya los descubrirás, por aquí te dejo un ejemplo que uso yo como base (no se si es igual al tuyo.)

Quote
quest deviltower_zone begin
  state start begin
  when login begin
  if pc.get_map_index() == 66 then
  if pc.get_x() < 2048+88 or pc.get_y() < 6656+577 or pc.get_x() > 2048+236 or pc.get_y() > 6656+737 then
  pc.warp(590500, 110500)
  end
  pc.set_warp_location(65, 5905, 1105)
  elseif pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
  pc.set_dungeonindex(d.get_map_index())
  pc.setqf("dungeonorgindex",66)
  pc.setqf("dungeon_ch",pc.get_channel_id())
  pc.set_warp_location(65, 5905, 1105)
  deviltower_zone.register_player(pc.get_vid())
  end
  end
   
   
  when 20348.chat."Kaldýðýn Yerden Devam Et" with d.find(pc.get_dungeonindex()) begin
  if pc.getqf("dungeonorgindex") != 66 then
  say("Son girdiðin zindan burasý deðil!")
  return
  end
  if pc.getqf("dungeon_ch") != pc.get_channel_id() then
  say("Zindana girdiðin ch burasý deðil!")
  return
  end
  local n = pc.get_dungeonindex()
  local oldumu = d.getf_from_map_index("azrail_dead", n)
  local level = d.getf_from_map_index("level", n)
  if level < 4 then
  say("4. Kata ulaþamadýðýnýz için devam edemezsin.")
  return
  end
  if oldumu == 1 then
  say_npc()
  say("Azraili zaten yok etmiþsin.")
  return
  end
  if n == 0 then
  setskin(NOWINDOW)
  return
  end
  if level == 4 then
  say_npc()
  say("Görünüþe göre 4. katta kuleden ayrýldýn, sana yardýmcý olmak istiyorum.")
  say_sari("Kuleye devam etmek istiyor musun?")
  if select(locale.yes,locale.no) == 1 then
  pc.warp(special.devil_tower[level-1][1]*100, special.devil_tower[level-1][2]*100,n)
  end
  end
  if level == 5 then
  say_npc()
  say("Görünüþe göre 5. katta kuleden ayrýldýn, sana yardýmcý olmak istiyorum.")
  say_sari("Kuleye devam etmek istiyor musun?")
  if select(locale.yes,locale.no) == 1 then
  pc.warp(special.devil_tower[level-1][1]*100, special.devil_tower[level-1][2]*100,n)
  end
  end
  if level == 6 then
  say_npc()
  say("Görünüþe göre 6. katta kuleden ayrýldýn, sana yardýmcý olmak istiyorum.")
  say_sari("Kuleye devam etmek istiyor musun?")
  if select(locale.yes,locale.no) == 1 then
  pc.warp(special.devil_tower[level-1][1]*100, special.devil_tower[level-1][2]*100,n)
  end
  end
  if level == 7 then
  say_npc()
  say("Görünüþe göre 7. katta kuleden ayrýldýn, sana yardýmcý olmak istiyorum.")
  say_sari("Kuleye devam etmek istiyor musun?")
  if select(locale.yes,locale.no) == 1 then
  pc.warp(special.devil_tower[level-1][1]*100, special.devil_tower[level-1][2]*100,n)
  end
  end
  if level == 8 then
  say_npc()
  say("Görünüþe göre 8. katta kuleden ayrýldýn, sana yardýmcý olmak istiyorum.")
  say_sari("Kuleye devam etmek istiyor musun?")
  if select(locale.yes,locale.no) == 1 then
  pc.warp(special.devil_tower[level-1][1]*100, special.devil_tower[level-1][2]*100,n)
  end
  end
  if level == 9 then
  say_npc()
  say("Görünüþe göre 9. katta kuleden ayrýldýn, sana yardýmcý olmak istiyorum.")
  say_sari("Kuleye devam etmek istiyor musun?")
  if select(locale.yes,locale.no) == 1 then
  pc.warp(special.devil_tower[level-1][1]*100, special.devil_tower[level-1][2]*100,n)
  end
  end
  end
   
  when logout begin
  if pc.count_item(30300) >= 1 then
  pc.remove_item(30300, pc.count_item(30300))
  end
  if pc.count_item(30302) >= 1 then
  pc.remove_item(30302, pc.count_item(30302))
  end
  if pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
  deviltower_zone.unregister_player(pc.get_vid())
  pc.setf("deviltower","dungeon_time",get_global_time() + 10*60*1)
  end
  end
  when 20348.chat."Þeytan Kulesi " begin
  if pc.get_level() < 40 then
  say_title("Þeytan Kulesi Bekçisi:")
  say("Seviyen giriþ için yeterli deðil.")
  return
  else
  say_title("Þeytan Kulesi Bekçisi:")
  say("Þeytan kulesine girmek istiyor musun?")
  say("2. Kattan devam etmek isterseniz 25M yang gerekmektedir.")
  say_reward("Oyundan istemediðiniz halde çýkarsanýz")
  say_reward("Kaldýðýnýz yerden devam edebilirsiniz!")
  local s = select("Gir.", "2.Kat'a Giriþ Yap.", "Ýstemiyorum.")
  if s == 1 then
  pc.warp(216500,727000)
  elseif s == 2 then
  if pc.get_money() < 25000000 then
  say("Hay Aksi!")
  say("Envanterine 25M yang olmadan seni içeri alamam.")
  say("25M yang yaptýðýnda tekrar uðra.")
  else
  pc.change_money(-25000000)
  d.new_jump(66, special.devil_tower[1][1] * 100, special.devil_tower[1][2] * 100)
  d.regen_file("data/dungeon/deviltower2_regen.txt")
  d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[2][1], special.devil_tower[2][2], "data/dungeon/deviltower3_regen.txt")
  end
  elseif s == 3 then
  return
  end
  end
  end
   
  function GrupKontrol()
  local pids = {party.get_member_pids()}
  for i = 1, table.getn(pids), 1 do
  q.begin_other_pc_block(pids)
  if party.is_party() then
  if party.is_leader() then
  timer("devil_stone1_2", 2)
  end
  end
  q.end_other_pc_block()
  end
  end
   
   
  when 8015.kill with pc.get_map_index() == 66 begin
  if party.is_party() then
  deviltower_zone.GrupKontrol()
  else
  timer("devil_stone1_1", 2)
  end
  end
  when devil_stone1_1.timer begin
  d.new_jump_all(66,special.devil_tower[1][1],special.devil_tower[1][2])
  d.regen_file("data/dungeon/deviltower2_regen.txt")
  d.setf("party_leader_pid",pc.get_player_id())
  d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[2][1], special.devil_tower[2][2], "data/dungeon/deviltower3_regen.txt")
  end
  when devil_stone1_2.timer begin
  d.new_jump_all(66,special.devil_tower[1][1],special.devil_tower[1][2])
  d.regen_file("data/dungeon/deviltower2_regen.txt")
  d.setf("party_leader_pid",party.get_leader_pid())
  party.setf("deviltower_mapindex",d.get_map_index())
  d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[2][1], special.devil_tower[2][2], "data/dungeon/deviltower3_regen.txt")
  end
  when kill with npc.get_race() == 1091 begin
  d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[3][1], special.devil_tower[3][2], "data/dungeon/deviltower4_regen.txt")
  d.check_eliminated()
  end
  function get_4floor_stone_pos()
  local positions =
  {
  {368, 629}, {419, 630}, {428, 653}, {422, 679},
  {395, 689}, {369, 679}, {361, 658},
  }
  for i = 1, 6 do
  local j = number(i, 7)
  if i != j then
  local t = positions;
  positions = positions[j];
  positions[j] = t;
  end
  end
  return positions
  end
  when kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.get_race() == 8016 begin
  d.setf("level", 4)
  local positions = deviltower_zone.get_4floor_stone_pos()
  for i = 1, 6 do
  d.set_unique("fake" .. i , d.spawn_mob(8017, positions[1], positions[2]))
  end
  local vid = d.spawn_mob(8017, positions[7][1], positions[7][2])
  d.set_unique("real", vid)
  server_loop_timer('devil_stone4_update', 10, pc.get_map_index())
  server_timer('devil_stone4_fail1', 5*60, pc.get_map_index())
   
  d.notice("4. Kat Seçenek Kapýsýndasýn.");
  d.notice("Gözlerini ve kulaklarýný aldatacak bir çok sahte");
  d.notice("Metin Taþý mevcut. 15 dakika içerisinde");
  d.notice("gerçek Metin Taþý'ný bul ve yok et!");
  d.notice("Kapýdan geçmenin tek yolu budur.");
  end
   
  when devil_stone4_fail1.server_timer begin
  if d.select(get_server_timer_arg()) then
  d.notice("10 dakika kaldý ")
  server_timer('devil_stone4_fail2', 5*60, get_server_timer_arg())
  end
  end
   
  when devil_stone4_fail2.server_timer begin
  if d.select(get_server_timer_arg()) then
  d.notice("5 dakika kaldý ")
  server_timer('devil_stone4_fail', 5*60, get_server_timer_arg())
  end
  end
   
  when devil_stone4_fail.server_timer begin
  if d.select(get_server_timer_arg()) and d.getf("level") == 4 then
  d.notice("Zaman doldu! ")
  d.exit_all()
  end
  end
   
  when devil_stone4_update.server_timer begin
  if d.select(get_server_timer_arg()) then
  if not d.is_unique_dead("real") then
  for i = 1, 6 do
  if d.getf("fakedead" .. i) == 0 then
  if d.unique_get_hp_perc("fake" .. i) < 50 then
  d.purge_unique("fake" .. i)
  d.setf("fakedead" .. i, 1)
  d.notice("Sahte Metin taþlarý yok oldu...");
  end
  end
  end
  else
  server_timer("devil_stone4_end", 5, get_server_timer_arg())
   
  d.notice("Mükemmel bir duyma yeteneðine ve iyi bir");
  d.notice("içgüdüye sahip olduðunu kanýtlayarak");
  d.notice("gerçek Metin Taþý'ný yok ettin!");
  d.notice("Þimdi 5.kata gireceksin.")
  d.purge()
  end
  else
  server_timer('devil_stone4_stop_timer', 1, get_server_timer_arg())
  end
  end
   
  when devil_stone4_stop_timer.server_timer begin
  clear_server_timer('devil_stone4_update', get_server_timer_arg())
  end
   
  when devil_stone4_end.server_timer begin
  if d.select(get_server_timer_arg()) then
  clear_server_timer('devil_stone4_update', get_server_timer_arg())
  clear_server_timer('devil_stone4_fail1', get_server_timer_arg())
  clear_server_timer('devil_stone4_fail2', get_server_timer_arg())
  clear_server_timer('devil_stone4_fail', get_server_timer_arg())
   
  d.setf("level", 5)
  d.setf("stone_count", 5)
   
  d.jump_all(special.devil_tower[4][1], special.devil_tower[4][2])
  d.notice("5.Kattaki Mühürlü Kapý'dasýn. Bir sonraki kata ")
  d.notice("çýkmak için beþ Eski Mühür'ü açman gerek. Bu alan ")
  d.notice("sana saldýrmak için bekleyen canavarlarla dolu.")
  d.notice("Bazýlarýnýn üzerinde anahtar var. Yeteri kadar ")
  d.notice("Kilit Açma Taþý elde eder ve tüm mühürleri ")
  d.notice("açarsan 6. kata çýkabilirsin. Ama bil ki sadece ")
  d.notice("20 dakikan var!")
   
   
  server_timer('devil_stone5_fail1', 5*60, get_server_timer_arg())
  clear_server_timer('devil_stone4_update', get_server_timer_arg())
   
  d.set_regen_file("data/dungeon/deviltower5_regen.txt")
   
  d.spawn_mob(20073, 421, 452)
  d.spawn_mob(20073, 380, 460)
  d.spawn_mob(20073, 428, 414)
  d.spawn_mob(20073, 398, 392)
  d.spawn_mob(20073, 359, 426)
  d.spawn_mob(8023, 428, 427)
  d.spawn_mob(8023, 370, 401)
  d.spawn_mob(8023, 418, 404)
  d.spawn_mob(8023, 395, 463)
  d.spawn_mob(8023, 370, 451)
  end
  end
  when 8023.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
  game.drop_item(50084, 1)
  end
  when devil_stone5_fail1.server_timer begin
  if d.select(get_server_timer_arg()) then
  d.notice("15 dakika kaldý ")
  server_timer('devil_stone5_fail2', 5*60, get_server_timer_arg())
  end
  end
   
  when devil_stone5_fail2.server_timer begin
  if d.select(get_server_timer_arg()) then
  d.notice("10 dakika kaldý ")
  server_timer('devil_stone5_fail3', 5*60, get_server_timer_arg())
  end
  end
   
  when devil_stone5_fail3.server_timer begin
  if d.select(get_server_timer_arg()) then
  d.notice("5 dakika kaldý ")
  server_timer('devil_stone5_fail', 5*60, get_server_timer_arg())
  end
  end
   
  when devil_stone5_fail.server_timer begin
  if d.select(get_server_timer_arg()) and d.getf("level") == 5 then
  d.notice("Zaman doldu!")
  d.exit_all()
  end
  end
   
  when kill with pc.in_dungeon() and d.getf("level") == 5 and npc.get_race() == 1062 begin
  local KILL_COUNT_FOR_DROP_KEY = 7
  local n =d.getf("count") + 1
  d.setf("count", n)
  if n == KILL_COUNT_FOR_DROP_KEY then
  game.drop_item(50084, 1)
  d.setf("count", 0)
  end
  end
   
  when kill with npc.get_race() == 8013 and d.getf("level") == 5 begin
  game.drop_item(50084, 1)
  end
   
  when devil_stone5.take with item.vnum == 50084 begin
  npc.purge()
  pc.remove_item(50084,1)
  d.setf("stone_count", d.getf("stone_count") - 1)
  if d.getf("stone_count") <= 0 then
  d.clear_regen()
  d.kill_all()
  d.notice("Mührü açtýn. 6. Kata çýkýyorsunuz!")
   
  clear_server_timer('devil_stone5_fail1', get_server_timer_arg())
  clear_server_timer('devil_stone5_fail2', get_server_timer_arg())
  clear_server_timer('devil_stone5_fail3', get_server_timer_arg())
  clear_server_timer('devil_stone5_fail', get_server_timer_arg())
   
  d.setf("level", 6)
  d.jump_all(special.devil_tower[5][1], special.devil_tower[5][2])
  d.regen_file("data/dungeon/deviltower6_regen.txt")
   
  d.notice("Þeytan Krala ulaþmak için tüm ")
  d.notice("þeytanlarý öldür!")
   
  else
  d.notice("Mührü açtýn! "..d.getf("stone_count").." kaldý.")
  end
  end
   
  when kill with npc.get_race() == 1092 begin
  d.kill_all()
  d.check_eliminated()
  local reward_alchemist = {20074, 20075, 20076}
  d.spawn_mob(reward_alchemist[number(1,3)], 425, 216);
  d.setqf("can_refine", 1)
  end
   
   
  when 20074.chat."Üst katlar" or 20075.chat."Üst katlar" or 20076.chat."Üst katlar" with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
  if d.getf("check1") == 1 then
  say("")
  say("Cok kisa bir sure once buradaydin?")
  return
  end
  if not npc.lock() then
  say("")
  say("Þu anda baþka biriyle konuþuyorum!")
  say("Biraz bekle ya da sonra tekrar gel!")
  return
  end
  say_title(mob_name(npc.get_race()))
  say("Kulenin 7. katýna girmek mi istiyorsun?")
  say("Bu katla mücadele etmek muhteþem beceriler ve")
  say("büyük bir yazgý gerektirir.")
  say("Sadece 75. seviyeye ulaþtýysan")
  say("seni oraya ýþýnlayabilirim.")
  wait()
  if pc.level >=75 then
  say_title(mob_name(npc.get_race()))
  say("Üst kata çýkmak için")
  say("yeterli deneyime ve güce sahipsin.")
  say("Girebilirsin!")
  say("")
  local gec = select("Git!","Vazgeç ","Kuleyi terket!")
  if gec == 1 then
  --local plusone = d.getf("check1") +1
  d.setf("check1", 1)
  timer("devil_jump_7",6)
  npc.unlock()
  npc.purge()
  return
  elseif gec == 2 then
  npc.unlock()
  return
  elseif gec == 3 then
  npc.unlock()
  pc.warp(590500, 110500)
  end
  else
  say_title(mob_name(npc.get_race()))
  say("Üzgünüm sadece")
  say("75. seviyeye ulaþanlarý bir")
  say("üst kata alabilirim.")
  say("")
  npc.unlock()
  wait()
  pc.warp(590500, 110500)
  return
  end
  end
   
  when devil_jump_7.timer begin
  d.clear_regen()
   
  d.spawn_mob(8018, 639, 658)
  d.spawn_mob(8018, 611, 637)
  d.spawn_mob(8018, 596, 674)
  d.spawn_mob(8018, 629, 670)
   
  d.setf("level", 7)
   
  d.jump_all(2048+590, 6656+638)
  end
   
  when kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.get_race() == 8018 begin
  local cont = d.getf("7_stone_kill") + 1
  d.setf("7_stone_kill", cont)
   
  if cont >= 4 then
  d.setf("7_stone_kill", 0)
  d.set_regen_file("data/dungeon/deviltower7_regen.txt")
  end
  end
   
  when 8019.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
  local qf = d.getf("7_stone2_kill")+1
  if qf <= 150 then
  d.setf("7_stone2_kill", qf)
  game.drop_item(30300, 1)
  d.notice("Katil metnini "..(150-qf.." kere daha kesebilirsiniz;"))
  d.notice("Eðer daha fazla keserseniz, kattan dýþarý atýlacaksýnýz!")
  else
  d.exit_all()
  end
  end
   
  when 30300.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
  pc.remove_item("30300", 1)
   
  local pct = number(1,8)
   
  if pct == 1 then
  game.drop_item(30302, 1)
  d.clear_regen()
  else
  game.drop_item(30301, 1)
   
  end
  end
   
  when 30302.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
   
  if d.getf( "level" ) != 7 then
  pc.remove_item( "30302", 1)
  return
  end
  if d.getf( "harita" ) != 0 then
  pc.remove_item( "30302", 1)
  return
  end
   
  say("Bu haritayla bir sonraki kata çýkabilirim!")
  pc.remove_item("30302", 1)
  d.setf("harita",1)
  timer("devil_jump_8", 6)
  d.clear_regen()
  end
   
   
  when devil_jump_8.timer begin
  d.setf("level", 8)
  local plusone = d.getf("check") +1
  d.setf("check", plusone)
  d.jump_all(2048+590, 6656+403)
  d.set_regen_file("data/dungeon/deviltower8_regen.txt")
  d.spawn_mob(20366, 640, 460)
  local _count = pc.count_item(30302)
  pc.remove_item(30302,_count)
  if d.getf("check") != 1 then
  d.notice("Bug kullanimi tespit edildi, disari gönderiliyorsun!")
  d.clear_regen()
  d.exit_all()
  end
  end
   
  when kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.get_race() == 1040 begin
  if d.getf("level") < 9 then
  local pct1 = number(1, 10)
  if pct1 == 1 then
  local pct2 = number(1, 4)
  if pct2 == 1 then
  -- ÁøÂ¥ ¿­¼è µå·Ó
  game.drop_item(30304, 1)
  else
  -- °¡Â¥ ¿­¼è µå·Ó
  game.drop_item(30303, 1)
  end
  else
  return
  end
  end
  end
   
  when 20366.take with item.vnum == 30304 begin
  if d.getf("anahtar") == 1 then return end
  npc.purge()
  pc.remove_item(30304,1)
  d.setf("anahtar",1)
  timer("devil_jump_9", 8)
  end
   
  ---------------------------------------------
  -- 9Ãþ ÁøÀÔºÎÅÍ ¿Ï·á±îÁö
  ---------------------------------------------
  when devil_jump_9.timer begin
  d.setf("level", 9)
  d.jump_all(2048+590, 6656+155)
  d.regen_file("data/dungeon/deviltower9_regen.txt")
  end
   
  when kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.get_race() == 1093 begin
  d.kill_all()
  pc.setf("deviltower_zone","9_done",1)
  notice_all("|cff00ff00"..pc.get_name().." grubu, Lusifer'ý öldürdü!")
  d.setf("azrail_dead", 1)
  timer("devil_end_jump", 30)
  d.kill_all()
  d.clear_regen()
  end
   
  when devil_end_jump.timer begin
  d.clear_regen()
  d.exit_all()
  end
   
  function register_player(vid)
  local player_count = d.getf("player_count")
  player_count = player_count + 1
  d.setf("player_count", tonumber(player_count))
  d.setf(string.format("player%d", player_count), tonumber(vid))
  end
  function unregister_player(vid)
  local player_count = d.getf("player_count")
  local found = false
  for i = 1, player_count, 1 do
  if found == true then
  d.setf(string.format("player%d", tonumber(i)), d.getf(string.format("player%d", i+1)))
  end
  p = d.getf("player"..tostring(i))
  if p == vid then
  i = i -1
  found = true
  end
  end
  if found == true then
  d.setf("player_count", tonumber(player_count - 1))
  end
  end
  function get_players()
  local players = {}
  local player_count = d.getf("player_count")
  for i = 1, player_count, 1 do
  players = d.getf("player"..tostring(i))
  end
  return players
  end
  function give_dc_access(pindex)
  local self_checked = false
  local self = pc.select(d.getf("player"..tostring(pindex)))
  --pc.setqf("dcenter", 1)
  pc.setf("deviltower_zone", "dcenter", 1)
  pc.select(self)
  end
  end
  end

traducela y pruebala si furula bien y sino pues lo siento no se mucho de quest, yo uso esa como base porque uso el código de ese tío, pero como he dicho, tienes que testearlo y probar bien, porque como tu guía de metin2dev, pueden haber problemas con miembros que no son del grupo, que si es el líder quien lleva el timer, etc, saludos.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...