antiblock
https://arwen2.global/

kikoocunha

Membro
  • Content Count

    121
  • Joined

  • Last visited


Reputation Activity

  1. Upvote
    kikoocunha got a reaction from Mastema in Orvalhos No Máximo   
    Boas. Eu estava com umas dúvidas em como pôr os orvalhos a saírem no máximo e o tempo máximo e já me ajudaram e vou ajudar-vos aqui também.
    Eu vou fazer um tutorial de como colocar no filezilla mas de qualquer maneira, já disponibilizei o ficheiro editado por mim para saírem orvalhos ao máximo e com 3 , 5 ,10 minutos. Como preferirem :)
    Download: (Tempo 10 minutos orvalhos)
    https://mega.co.nz/#...WBYc_tdm4hU0ODg
    Download: (Tempo 5 minutos orvalhos)
    https://mega.co.nz/#...WBYc_tdm4hU0ODg
    Download: (Tempo 3 minutos orvalhos)
    https://mega.co.nz/#...WBYc_tdm4hU0ODg
    Virus Total:
    https://www.virustotal.com/pt/file/56fe39da521c30b1fef9da3b26391859029b53e4fdad1646cb117f7e0162bfd3/analysis/1369093763/
    O ficheiro que é editado para alterar os orvalhos é o "blend.txt" que se encontra no seguinte directório (files lauling) : /usr/home/game/share/locale/germany
    Depois substituem o ficheiro e dão reboot .
    Créditos:
    ƤāƱŁѲƒēƦƦēƗƦā (por me ter ajudado)
    KikooCunha
    Se ajudá-mos , dá http://cyber-gamers.org/public/style_emoticons/default/451960.gif =D
  2. Upvote
    kikoocunha reacted to GlossyZinhow in Serverfiles Azylon2   
    Verificado : 18/08/2018
    Link cLient: ON
    Link Files : OFF
    Re-upload sff
     
    Bom tarde,
    estas serverfiles era para abrir um server cujo o nome seria Azylon2 mas como não tenho conhecimento para instalar dedicado e dinheiro para comprar decidi postar as files.
     
    Files de origem: http://cyber-gamers.org/index.php?/topic/17246-server-files-by-invoice-v3-editadas/
     
     
    Caracteristicas:
    º Nivel: 105
    º Status: 90
    º Sistema de pets, todos incluidos desde phoenix aos novos da pascoa e a funcionar corretamente.
    º Sistema de costums, não tem os mais recentes.
    º Sistema de crafting, só tem um bug que é não aparecer o segundo item.
    º Skybox
    º Lojas editadas.
    º Missões do biologo até nivel 90, sem tempo de espera.
    º Montadas todas do oficial, até aos cavalos novos o de gelo e do fogo/lume.
    º Cliente 100% português.
    º Novos monstros da baia fazem as habilidades.
    º Caverna das Aranhas ( 1 ), última sala ( vermelha ) tem 4 ovos e nesses ovos sai passagem que podem utilizar para ir par a a Caverna das Aranhas 2, na sala vermelha desta Caverna ( 2 ) tem um portal que teleporta para a Caverna ( 3 ), na última sala também tem 4 ovos em que sai Chave do Aracanidio e ao entregarem na velha lapide ela vai vos teleportar para a sala da Aranha Baronesa.
    º Ferreiro, Probabilidade de acertar: 100% ,Itens para refinações: Ostras e Perolas em todos os itens antes das epicas, as epicas pedem as refinações igual ao Oficial.
    º Gruta das Almas, é necessário Pedra de Sangue para poder entrar. A Pedra de Sangue pode ser obtida nas Metins do Assaino da Terra do Fogo ou do sexto piso da Torre do Demónio.
    º Metins da Dor até ás Metins do Ciúme Drops: Ostras em todas e o resto igual ao Oficial.
    º Metins da Alma até ás Metins Jeon-Un Drops: Ostras e Almas em todas e o resto igual ao Oficial.
     
    Dados:
    Virtual
    Pass: não tem ( é só dar enter )
    Navicat
    Pass: invoice
    Jogo:
    ID: admin
    Pass: 12345
     
    Comando para iniciar:
    cd /usr/game && sh start.sh
     
    Download:
    Files: https://mega.co.nz/#!wlIVVRgJ!Mhi_x0OntYpl2OSGicWb30GDkPhWFIOVZKxUPK8zli0
    Cliente: https://mega.co.nz/#!dph12CqB!GCJclDMcZWumUCg_DtVjNR9ZUolycIp6pYS2tzVh1XY
    Actualização para Cliente: https://mega.co.nz/#!wtgGlKSa!K-bJ1FIG7UCJUZnAoHH9glnJ0FAPluLC60T7O8AGQy0
     
     
    Imagens ( Só tenho estas imagens que estavam no cliente, quem poder tirar umas para eu meter agradecia ):





    Actualização:
     
    Como me pediram o .vdi aqui está ele.
    Download:
    https://mega.co.nz/#!dpJT2AAI!ccJD-zGOjZACqPruHfHZdxfQm_BRXgC_LTCVzlvMO5A
     
    Imagens das habilidades dos novos boss's:




  3. Upvote
    kikoocunha got a reaction from Henrique Oliveira in Inscreve-Te Já No Meu Clube De Haters!   
    já estou inscrito xb
  4. Upvote
    kikoocunha reacted to 'PACI in [Sugestão] Capas Automáticas   
    Não testei, mas é capaz de dar assim: 
    quest autocapas begin state start begin when IDITEM.use begin -- ID do Item. if pc.getqf("ativado") == 0 then pc.setqf("ativado", 1) syschat("Ativado.") else pc.setqf("ativado", 0) syschat("Desativado.") end while pc.getqf("ativado") == 1 do pc.aggregate_monster() end end endend
  5. Upvote
    kikoocunha reacted to DamnGirl in Jogos Android De Graça .   
    Tu és burro...
     
    Ele vai por no Google 'Site para sacar jogos Android, confiavel' ? lol..
     
    _____
     
    Tens ai.
    http://mob-core.com/pt/android_games/
  6. Upvote
    kikoocunha reacted to Papix in Grand Theft Auto Iv   
    Grand Theft Auto IV (também conhecido pelas abreviações GTA IV e GTA 4) é um jogo de ação da série Grand Theft Auto, criado pela Rockstar Games, produzido por suas subdisiárias e lançado em 29 de Abril de 2008 para PlayStation 3 e Xbox 360 e em 2 de Dezembro de 2008 para computador. Em 17 de fevereiro de 2009, a versão para Xbox 360 ganhou duas expansões, subintituladas The Lost and Damned e The Ballad of Gay Tony, que ganharam versões para PC e PlayStation 3 em 13 de abril de 2010. O jogo obteve um imenso sucesso, chegando a ter mais de 13 milhões de cópias vendidas em todo o mundo. Também ganhou uma excelente avaliação, vistada por grandes sites sobre o assunto, como MobyGames e GameSpy. Grand Theft Auto IV tem uma base semelhante a de seus antecessores, que consiste em controlar um personagem livremente em um ambiente grande e amplo. A pé, o jogador pode andar, correr, saltar, escalar, nadar, comer, beber, e também, utilizar diversos tipos de armas, sejam elas facas, bastões, pistolas, fuzis, bazucas, granadas e outras. Também é possível utilizar veículos, como carros, motos, caminhões, barcos e helicópteros. Existem também atividades complemetares, como boliche e corridas. Sendo o jogo centrado no mundo do crime, o jogador pode também realizar ações ilegais, como roubar, agredir e/ou matar alguém, o que pode chamar a atenção de policiais.   Requisitos mínimos:  Sistema operacional: Windows XP/Vista/7 Processador: Intel Core 2 Duo ou AMD Athlon X2 64 (Ambos com 1.8GHz em cada núcleo) Memória RAM: No Win. XP - 1.5GB, no Win. Vista e 7 - 2GB Placa de vídeo: GeForce NVidia 7900 GS ou ATI X1900 GT (Ambas com 256MB vram) Hard Disk (HD): 16GB de espaço livre DirectX: 9.0c ou superior   Requisitos recomendados: Sistema operacional: Windows XP/Vista/7 Processador: Intel Core 2 Quad ou AMD Phenom X3 (Ambos com 2.4GHz em cada núcleo) Memória: No Win. XP -  2GB, no Win. Vista e 7 - 2.5GB Placa de vídeo: GeForce NVidia 8600 GTS ou ATI HD 3870 (Com 512MB vram) Hard Disk (HD): 18GB de espaço livre DirectX: 10.0   Informações do arquivo: Fabricante: Rockstar Games Idioma: Inglês (Português após instalada a tradução) Ano de lançamento: 2008 Plataforma: PC Estilo: Criminal (simulação) Compatibilidade: XP/Vista/7
    Formato: ISO Tamanho: 13.85 GB   Download via torrent
      Crack   http://hotfile.com/dl/167633087/b57f4ae/Crack_%28Razor_1911%29.rar.html   Patch 1.0.6.0   http://hotfile.com/dl/167633093/53dcde0/GTA_IV_-_Patch_1.0.6.0.rar.html   XLiveLess   https://hotfile.com/dl/186625808/66167bb/XLiveLess.rar.html   Tradução (Pt-Br)   https://hotfile.com/dl/167636142/5ec0a30/Traduo_%28By_GameVicio%29.rar.html  
    Após ter baixado TUDO, veja a video-aula
    para aprender a como instalar o jogo e o crack:   





    Deixem o +1 se possível :) não custa e incentiva a continuar :)



    Cumprimentos Pastor Alemão#
  7. Upvote
    kikoocunha reacted to ColoradoMt2 in [Dedicado] Coloradomt2   
    ColoradoMt2, um novo servidor privado onde grandes guerras e eventos te aguardam.
    Vem divertir-te juntamente com os teus amigos e apaixona-te por esta fantástica aventura.
    Um servidor pelo qual muitos estão a espera mas poucos conseguem chegar ao topo e derrotar o Dragão.
    Será que és capaz? Queres demonstrar que és um dos poucos que consegue atingir o topo?
    Aventura-te no Colorado e prova que és um guerreiro imbatível!
     
     
     
     
     Características do servidor:
     

    - Servidor dedicado
     
    - Nível máximo 120

     
    - Totalmente em Português
     
    - Novas Metins
     
     - Montadas
     
     - Anel de Levi
     
    - Pets
     
    - Sistema de Energia
     
    - Sistema de Disfarces
     
    - Penteados Novos
     
    - Penteados Especiais


     
    Rates:
    - 250% YANG
    - 200% EXP
     
    Refinações:
     
    Armaduras:

     
    Armas Guerreiro:

     
    Armas Ninja:

     
    Armas Sura:

     
    Armas Xamã:

     
     
    Mapas:
     
    - V3
     
    - Mapa Metins
     
    - Catacumbas do Demónio
     
    - Mapas Beta
     

     
     
    Missões :
     
    - Todas as missões do Uriel (missões das Páginas do Diário) estão disponíveis, e juntamente
    com elas, as missões do Biólogo( a partir do nível 30), com excelentes recompensas.
     
    - Uma das grandes novidades, é a nova Missão da Nação das Trevas, que também está ao vosso dispor.
     
    - As missões iniciais, do Guarda da Cidade, estão abertas.
     
     
    Dicas:
     
    -  Para quem quer começar logo em grande, uma boa escolha será concluir as missões iniciais do Guarda da Cidade.
    Infelizmente não posso divulgar, para já, as recompensas destas missões, mas é algo muito útil para quem 
    começa a jogar.
     
     
    - Um bom investimento inicial, será comprar o Anel de Levi que se encontra a venda na Loja Geral, que vos teleportará para onde desejarem de forma a evitarem atrasos na jogabilidade e percas de tempo a procura do teleportador para quem está a correr pelo primeiro lugar.
     
     
    Eventos:
     
    - Evento OX
     
    - Evento PVP
     
    - Evento Caixas Luares
     
    - Evento Pesca
     
    - Evento Piratas Tanaka
     
    - Invasão dos Monstros
     
    - Invasão das Metins
     
     
     
    O servidor não é fácil, para quem gosta de desafios e dá preferência a servidores que exigem mais esforço e mais experiência na jogabilidade, o ColoradoMt2 é a melhor escolha!
     
    Os jogadores sempre podem tirar as suas dúvidas e esclarecer situações utilizando o nosso sistema de tickets ou via forum.
     
     
    Site: http://www.coloradomt2.pt
    Forum: http://www.coloradomt2.pt/board
     
     
    Data prevista de abertura:
    Dia 5 de Outubro!  Ficaremos a tua espera!
  8. Upvote
    kikoocunha reacted to .SNiK in [Dif]Proteção Comando /Dice -2147483648 2147483647   
    Este problema taem vindo a ser cada ves mais comum em servidores privados.
    Qualquer jogador ao utilizar o comando /dice -2147483648 2147483647 causa danos no core, deitando o servidor a baixo...
    (99999999999999999999 99999999999999999999)
    A proteção mais comum é bloquear o comando no CMD
    Função Do_dice aplica o seguinte dif int A1 e A2 em int que representa os valores removidos, no jogo após o comando /dice 99999999999999999999 99999999999999999999 a resposta á dice é dada aos jogados a partir do número: 1 (1-1), irá ser desta forma, e o erro será corrigido.
    Mas disponibilizo a dif para o comando poder ser usado sem causar quais queres danos.
    Game 2019

    This difference file has been created by IDA Progame0007CA9F: E8 900007CAA0: FC 900007CAA1: 9A 900007CAA2: 11 900007CAA3: 00 900007CAA4: B8 900007CAA5: 64 900007CAA6: 00 900007CAA7: 00 900007CAA8: 00 900007CAB0: 74 900007CAB1: 1A 900007CAB9: 0F 900007CABA: 85 900007CABB: C1 900007CABC: 00 900007CABD: 00 900007CABE: 00 900007CAC7: E8 900007CAC8: 74 900007CAC9: 76 900007CACA: F8 900007CACB: FF 90 Game 2089M

    This difference file has been created by IDA Progame_2089M0007CC6F: E8 900007CC70: 6C 900007CC71: 96 900007CC72: 11 900007CC73: 00 900007CC74: B8 900007CC75: 64 900007CC76: 00 900007CC77: 00 900007CC78: 00 900007CC80: 74 900007CC81: 1A 900007CC89: 0F 900007CC8A: 85 900007CC8B: C1 900007CC8C: 00 900007CC8D: 00 900007CC8E: 00 900007CC97: E8 900007CC98: 00 900007CC99: 75 900007CC9A: F8 900007CC9B: FF 90 game 34083 metin2.sg files

    This difference file has been created by IDA Progame_34083000872DF: E8 90000872E0: EC 90000872E1: C5 90000872E2: 12 90000872E3: 00 90000872E4: B8 90000872E5: 64 90000872E6: 00 90000872E7: 00 90000872E8: 00 90000872F0: 74 90000872F1: 1A 90000872F9: 0F 90000872FA: 85 90000872FB: C1 90000872FC: 00 90000872FD: 00 90000872FE: 00 9000087307: E8 9000087308: C4 9000087309: E5 900008730A: F7 900008730B: FF 90 Abraço,
    .SNiK
  9. Upvote
    kikoocunha reacted to 'PACI in Problema Vb E Mysql .[Ajuda]   
    Um UPDATE nunca adiciona uma coluna a uma tabela
    Executa esta query a ver:

    DROP TABLE IF EXISTS `player`; CREATE TABLE `player` ( `id` int(11) NOT NULL AUTO_INCREMENT, `account_id` int(11) NOT NULL DEFAULT '0', `name` varchar(24) NOT NULL DEFAULT 'NONAME', `job` tinyint(2) unsigned NOT NULL DEFAULT '0', `voice` tinyint(1) unsigned NOT NULL DEFAULT '0', `dir` tinyint(2) NOT NULL DEFAULT '0', `x` int(11) NOT NULL DEFAULT '0', `y` int(11) NOT NULL DEFAULT '0', `z` int(11) NOT NULL DEFAULT '0', `map_index` int(11) NOT NULL DEFAULT '0', `exit_x` int(11) NOT NULL DEFAULT '0', `exit_y` int(11) NOT NULL DEFAULT '0', `exit_map_index` int(11) NOT NULL DEFAULT '0', `hp` smallint(4) NOT NULL DEFAULT '0', `mp` smallint(4) NOT NULL DEFAULT '0', `stamina` smallint(6) NOT NULL DEFAULT '0', `random_hp` smallint(5) unsigned NOT NULL DEFAULT '0', `random_sp` smallint(5) unsigned NOT NULL DEFAULT '0', `playtime` int(11) NOT NULL DEFAULT '0', `level` tinyint(2) unsigned NOT NULL DEFAULT '1', `level_step` tinyint(1) NOT NULL DEFAULT '0', `st` smallint(3) NOT NULL DEFAULT '0', `ht` smallint(3) NOT NULL DEFAULT '0', `dx` smallint(3) NOT NULL DEFAULT '0', `iq` smallint(3) NOT NULL DEFAULT '0', `exp` int(11) NOT NULL DEFAULT '0', `gold` int(11) NOT NULL DEFAULT '0', `stat_point` smallint(3) NOT NULL DEFAULT '0', `skill_point` smallint(3) NOT NULL DEFAULT '0', `quickslot` tinyblob, `ip` varchar(15) DEFAULT '0.0.0.0', `part_main` smallint(6) unsigned NOT NULL DEFAULT '0', `part_base` tinyint(4) NOT NULL DEFAULT '0', `part_hair` smallint(4) NOT NULL DEFAULT '0', `skill_group` tinyint(4) NOT NULL DEFAULT '0', `skill_level` blob, `alignment` int(11) NOT NULL DEFAULT '0', `last_play` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `change_name` tinyint(1) NOT NULL DEFAULT '0', `mobile` varchar(24) DEFAULT NULL, `sub_skill_point` smallint(3) NOT NULL DEFAULT '0', `stat_reset_count` tinyint(4) NOT NULL DEFAULT '0', `horse_hp` smallint(4) NOT NULL DEFAULT '0', `horse_stamina` smallint(4) NOT NULL DEFAULT '0', `horse_level` tinyint(2) unsigned NOT NULL DEFAULT '0', `horse_hp_droptime` int(10) unsigned NOT NULL DEFAULT '0', `horse_riding` tinyint(1) NOT NULL DEFAULT '0', `horse_skill_point` smallint(3) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `account_id_idx` (`account_id`), KEY `name_idx` (`name`) ) ENGINE=MyISAM AUTO_INCREMENT=57740 DEFAULT CHARSET=latin1;
  10. Upvote
    kikoocunha reacted to NewWars in Problema Vb E Mysql .[Ajuda]   
    Isso não cria o campo que ele deveria ter la..
    Vai a account -> account -> Editar Tabela -> adiciona um campo chamado last_play como datetime 0 de lenght
    e guarda, depois vai dar.
  11. Upvote
    kikoocunha reacted to 'PACI in Implementar Mobs   
    Olá,
    Pediram para fazer um tutorial para implementar mobs, e aqui vai, tentarei ser o mais explícito possível.
    Portanto, já alguma vez devem ter visto o que contém a pasta de algum mob.
    Contém vários ficheiros (.gr2, .msa, .msm, .mse, .tga/.dds e o motlist.txt)
    [*]O GR2 é o que contém, digamos, a forma do mob, a sua estrutura e os movimentos do mesmo.
    [*]Os ficheiros .msm e/ou .msa servem para que se possa aplicar o GR2.
    [*]Os ficheiros .mse tratam dos efeitos do mob.
    [*]O .tga ou .dds é a textura do mob.
    [*]E o motlist.txt indica os movimentos correspondentes a cada gr2.

    Para colocarmos o mob temos antes que verificar se a sua pasta contém estes ficheiros todos.
    Agora, instalar a pasta do mob no cliente. Bem, a meu ver, é mais fácil fazer um .eix e .epk que contenha só os ficheiros do dito mob, mas podem sempre colocá-lo em outro ficheiro. Para saber onde colocar, abrem o .msm e irão encontrar um diretório.
    Por exemplo:

    BaseModelFileName "D:Ymir Workmonster2crustacean_bosscrustacean_boss.GR2" Esse diretório indica onde é que vai buscar o .gr2 do mob. Sendo assim, descompactam o
    monster2.eix/.epk e vão até:
    ymir workmonster2 E colocam lá a pasta do mob. Depois no ficheiro .xml, que foi criado na altura de descompactar o monster2, devem adicionar as linhas dos ficheiros adicionados para que se possa compactar também no ficheiro e não seja excluído. Por exemplo:
    É imprescindível ter o .xml do ficheiro(s) adicionado(s), caso contrário, a alteração/adição não será aplicada.
    Bem, até aqui simples.
    O que devem fazer a seguir, é descompactar o root.eix/.epk e procurar por um ficheiro denominado: npclist.txt.
    O que lá contém é:

    id_mob [tabulador] nome_msm Isto servirá para que consigam ver o mob. Exemplo:

    7052 scorpionman_sword7053 scorpionman_bow7054 snakeman_sword É obrigatório estar separado o nome do .msm do id do mob pelo tabulador. Após isto, guardam o
    npclist.txt e voltam a compactar o root. Sendo assim, vamos à parte final.
    A query:
    Ora bem, para o mob existir, devem cria-lo no
    mob_proto do navicat, se não, os passos anteriores efetuados, apenas enchiam o cliente de murraça por um mob que não existe. Para facilitar a vida, deixarei aqui uma query (serverside/clientside) para usarem como base para o vosso novo mob. Esta query não tem nada editado, vem com os valores no mínimo, portanto vocês já editam o que quiserem nela.
    Navicat -> Player -> Query -> New Query:
    -> Run
    Na query vocês editam o ID e o nome_mob.
    E por último, vem o mob_proto do cliente. Descompactam o locale e, de seguida, o mob_proto.
    Depois no final, adicionam:
    Fecham e guardam o mob_proto, compactam, colocam de novo no locale e compactam-no.
    Depois, os ficheiros todos (monster2, root, locale) colocam na pasta pack do vosso cliente.
    Entram no vosso servidor, fazem /reload p e depois testam o vosso novo mob. (/m id_mob).
    É tudo!
    Espero ter sido explícito, qualquer dúvida não hesitem em perguntar.
    Cumprimentos e Boa sorte.
  12. Upvote
    kikoocunha reacted to Str0nd3r in Lionboss   
    Olá comunidade, tenho aqui um novo mob que ainda não tinha encontrado aqui no forum.. Eu pessoalmente gostei bastante dele. Acho-o um Bichamontes. xD
    Imagem:

    Quanto à "animação" dos ataques, ele têm 2 ataques normais e 1 especial.
    Download:
    http://rapidgator.ne..._Venox.rar.html
    http://www31.zippysh...15366/file.html
    Scan:
    https://www.virustotal.com/pt/file/f3184139235040f09a98924d01cf27129724ede277d5cca38f247e709dbfb4cd/analysis/1357745404/
    Créditos: Mark //mpcforum
    Cumprimentos,
    Str0nd3r
  13. Upvote
    kikoocunha reacted to WildEgo in Retirar /Dice Outras Versões De Game   
    r34083

    This difference file has been created by Avenuer340830041E28A: 64 000041E28B: 69 000041E28C: 63 000041E28D: 65 00r2019
    This difference file has been created by Avenuer2019002FAF6A: 64 00002FAF6B: 69 00002FAF6C: 63 00002FAF6D: 65 00r2089M_32
    This difference file has been created by Avenuer2089M_32002FAFEA: 64 00002FAFEB: 69 00002FAFEC: 63 00002FAFED: 65 00Todos os diffs eleminam o comando! Créditos:
    [*]Bro .Avenue

    Cumprimentos,
    Luis "HaveGone" Bizarro
  14. Upvote
    kikoocunha reacted to WildEgo in [Super Hot Release] Yehona2 Serverfiles + Db   
    Yehona2 - ServerFiles PvP
    Informação sobre as ServerFiles: [*] Todos os mapas desnecessários foram removidos; [*]Todas as quests desnecessárias foram removidos; [*]Lojas ajustadas; [*]Game r34083; [*]Nova core da DB; [*]Sistema de Disfarces completo; [*]Sistema de Pets completo; [*]Sistema de Energia completo; [*]Bónus dos Pets a funcionar; [*]Todos os Disfarces implementados e utilizaveis; [*]Todas as Armas e Armaduras do servidor Beta disponiveis implementadas; [*]Rodar itens sem tempo; [*]Tempo de "extinção" fixxed (Se não tivesse acabava em Outubro, quando sai o novo rev); [*]Algumas quest's características do servidor Exodius;
    Informações sobre o Client:
    [*] Novo Design (Sem erros gráficos); [*]Todos os Pets e Montadas Oficiais; [*]Mini Azrael dourado e normal; [*]Kill-Gui (Butão F5); [*]Switch Bot Oficial (Carregando no butão verde no iventário); [*]Nova Interface de Login; [*]Nova Interface de Escolher Personagem (Charselect); [*]Sistema de Disfarces a funcionar 100%; [*]Sistema de Energia a funcionar 100%; [*]Sistema de Pets a funcionar 100%;
    !Atenção os ficheiros só estão disponíveis devido ao projecto do servidor ter sido cancelado!

    Prints:


    Créditos:
    [*] .Avenue
    Downloads:
    [*] Client: http://www.multiupload.nl/KRY1X326V9 [*]ServerFiles: Mega: https://mega.co.nz/#...cUjG_gMwtpxvy20 //
    MultiUpload: http://www.multiupload.nl/2NKJ9ZUKIL [*]Quests: https://mega.co.nz/#...fwPdTlm4YAasS0c
    !Atenção os ficheiros do client têm de ser colocados noutros clients tais como: Invoice, .tehSource ou Metin2.PT


    Cumprimentos,
    Luis "HaveGone" Bizarro
  15. Upvote
    kikoocunha reacted to WildEgo in [Dif] Desablitar Comando /Dice   
    EYHOOOO NIGGAS!
    VENHO AQUI APRESENTAR-VOS A DIFF PARA BLOQUEAR O COMANDO /DICE!
    TOU A ESCREVER COM CAPS LOCK PORQUE É FIXE!
    DIFF:

    This difference file has been created by IDA Pror2089M0042E0F4: 20 000042E0F5: 4C 000042E0F6: 0C 000042E0F7: 08 00CRÉDITOS: [*]NIGGA LEGEND!

    CUMPRIMENTOS,
    LUIS "HAVEGONE" BIZARRO
  16. Upvote
    kikoocunha reacted to ©FULL in Novos Trajes Do Youtube   
    Boas pessoal,
    Estava a navegar na epvp e encontrei estes trajes muito bons do youtube, para mim estão fixes, mas oque está propriamente mais fixe são as cores, porque não gosto muito de ver o símbolo do youtube, mas aì estão novos trajes.
    Prints:

    Scan:

    Download:

    Créditos:
    >> Elitepvpers - bakam321 <<
    Espero que tenham gostado!
    Cumprimentos, Full!
  17. Upvote
    kikoocunha reacted to skinhead in Para Quem Quer Dar Uso As Barras De Ouro   
    (" Serve para dar uso, as barras ao clikar nelas são removidas e darão o "x" Yang que for configurado.")Feito por: skinheadCréditos: skinhead
  18. Upvote
    kikoocunha reacted to Zeraw in Serverfiles 2013 By Kaoshi   
    Downloads###############

    Dados###############
    Fonte############### EPVP
  19. Upvote
    kikoocunha reacted to SINVAL o.O in [Release]Official Crafting System   
    Olá Pessoal
    Sistema Oficial Crafting para compartilhar hoje

    Print:

    Download
    VT
    Bem vamos lá:
    Add game.py

    dragon_soul_refine_settings.py

    locale/de/ui

    dragonsoulrefinewindow.py

    locale/de/ui

    dragonsoulwindow.py

    root

    uidragonsoul.py
    .Down()self.deckTab[(page+1)%2].SetUp()self.RefreshEquipSlotWindow()# ¿ëÈ¥¼® È°¼ºÈ* °ü·Ãdef ActivateDragonSoulByExtern(self, deck):self.isActivated = TRUEself.activateButton.Down()self.deckPageIndex = deckself.deckTab[deck].Down()self.deckTab[(deck+1)%2].SetUp()self.RefreshEquipSlotWindow()def DeactivateDragonSoul(self):self.isActivated = FALSEself.activateButton.SetUp()def ActivateButtonClick(self):self.isActivated = self.isActivated ^ TRUEif self.isActivated:if self.__CanActivateDeck():net.SendChatPacket("/dragon_soul activate " + str(self.deckPageIndex))else:self.isActivated = FALSEself.activateButton.SetUp()else:net.SendChatPacket("/dragon_soul deactivate")def __CanActivateDeck(self):canActiveNum = 0for i in xrange(6):slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(player.INVENTORY, player.DRAGON_SOUL_EQUIPMENT_SLOT_START + i)itemVnum = player.GetItemIndex(slotNumber)if itemVnum != 0:item.SelectItem(itemVnum)isNoLimit = TRUEfor i in xrange(item.LIMIT_MAX_NUM):(limitType, limitValue) = item.GetLimit(i)# LIMIT_TIMER_BASED_ON_WEAR´Â ¼ÒÄÏ0¿¡ ³²Àº ½Ã°£À» ¹Ú´Â´Ù.# LIMIT_REAL_TIMEÀº ½Ã°£ ´Ù µÇ¸é ¾ÆÀÌÅÛÀÌ »ç¶óÁö¹Ç·Î ÇÒ ÇÊ¿ä°¡ ¾ø´Ù.# LIMIT_REAL_TIME_START_FIRST_USE´Â ¼*¹ö¿¡ Á¦´ë·Î Á¤ÀǵÇÁö ¾Ê¾Æ ÀÏ´Ü ³ÀµĞ´Ù.if item.LIMIT_TIMER_BASED_ON_WEAR == limitType:isNoLimit = FALSEremain_time = player.GetItemMetinSocket(player.INVENTORY, slotNumber, 0)if 0 != remain_time:canActiveNum += 1break# ŸÀ̸Ӱ¡ ¾ø´Ù¸é ActivateÇÒ ¼ö ÀÖ´Â ¿ëÈ¥¼®.if isNoLimit:canActiveNum += 1return canActiveNum &--#62; 0# È°¼ºÈ* °ü·Ã ³¡# ½½·Ô highlight °ü·Ãdef __HighlightSlot_ClearCurrentPage(self):for i in xrange(self.wndItem.GetSlotCount()):slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(player.DRAGON_SOUL_INVENTORY, i)if slotNumber in self.listHighlightedSlot:self.wndItem.DeactivateSlot(i)self.listHighlightedSlot.remove(slotNumber)def __HighlightSlot_RefreshCurrentPage(self):for i in xrange(self.wndItem.GetSlotCount()):slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(player.DRAGON_SOUL_INVENTORY, i)if slotNumber in self.listHighlightedSlot:self.wndItem.ActivateSlot(i)def HighlightSlot(self, slot):if not slot in self.listHighlightedSlot:self.listHighlightedSlot.append (slot)# ½½·Ô highlight °ü·Ã ³¡def SetDragonSoulRefineWindow(self, wndDragonSoulRefine):if app.ENABLE_DRAGON_SOUL_SYSTEM:from _weakref import proxyself.wndDragonSoulRefine = proxy(wndDragonSoulRefine)## °*È*ÇÒ ¼ö ¾ø´Â °æ¿ì ³¯¸®´Â ¿¹¿Ü#class DragonSoulRefineException(Exception):#passclass DragonSoulRefineWindow(ui.ScriptWindow):REFINE_TYPE_GRADE, REFINE_TYPE_STEP, REFINE_TYPE_STRENGTH = xrange(3)DS_SUB_HEADER_DIC = {REFINE_TYPE_GRADE : player.DS_SUB_HEADER_DO_UPGRADE,REFINE_TYPE_STEP : player.DS_SUB_HEADER_DO_IMPROVEMENT,REFINE_TYPE_STRENGTH : player.DS_SUB_HEADER_DO_REFINE}REFINE_STONE_SLOT, DRAGON_SOUL_SLOT = xrange(2)INVALID_DRAGON_SOUL_INFO = -1def __init__(self):ui.ScriptWindow.__init__(self)self.tooltipItem = Noneself.sellingSlotNumber = -1self.isLoaded = 0self.refineChoiceButtonDict = Noneself.doRefineButton = Noneself.wndMoney = Noneself.SetWindowName("DragonSoulRefineWindow")self.__LoadWindow()def __del__(self):ui.ScriptWindow.__del__(self)def Show(self):self.__LoadWindow()ui.ScriptWindow.Show(self)def __LoadWindow(self):if self.isLoaded == 1:returnself.isLoaded = 1try:pyScrLoader = ui.PythonScriptLoader()pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "dragonsoulrefinewindow.py")except:import exceptionexception.Abort("dragonsoulrefinewindow.LoadWindow.LoadObject")try:if locale.IsARABIC():self.board = self.GetChild("DragonSoulRefineWindowBaseImage")self.board.SetScale(-1.0, 1.0)self.board.SetRenderingRect(-1.0, 0.0, 1.0, 0.0)wndRefineSlot = self.GetChild("RefineSlot")wndResultSlot = self.GetChild("ResultSlot")self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))self.refineChoiceButtonDict = {self.REFINE_TYPE_GRADE : self.GetChild("GradeButton"),self.REFINE_TYPE_STEP: self.GetChild("StepButton"),self.REFINE_TYPE_STRENGTH : self.GetChild("StrengthButton"),}self.doRefineButton = self.GetChild("DoRefineButton")self.wndMoney = self.GetChild("Money_Slot")except:import exceptionexception.Abort("DragonSoulRefineWindow.LoadWindow.BindObject")## Item SlotswndRefineSlot.SetOverInItemEvent(ui.__mem_func__(self.__OverInRefineItem))wndRefineSlot.SetOverOutItemEvent(ui.__mem_func__(self.__OverOutItem))wndRefineSlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.__SelectRefineEmptySlot))wndRefineSlot.SetSelectItemSlotEvent(ui.__mem_func__(self.__SelectRefineItemSlot))wndRefineSlot.SetUseSlotEvent(ui.__mem_func__(self.__SelectRefineItemSlot))wndRefineSlot.SetUnselectItemSlotEvent(ui.__mem_func__(self.__SelectRefineItemSlot))wndResultSlot.SetOverInItemEvent(ui.__mem_func__(self.__OverInResultItem))wndResultSlot.SetOverOutItemEvent(ui.__mem_func__(self.__OverOutItem))self.wndRefineSlot = wndRefineSlotself.wndResultSlot = wndResultSlot## Buttonself.refineChoiceButtonDict[self.REFINE_TYPE_GRADE].SetToggleDownEvent(self.__ToggleDownGradeButton)self.refineChoiceButtonDict[self.REFINE_TYPE_STEP].SetToggleDownEvent(self.__ToggleDownStepButton)self.refineChoiceButtonDict[self.REFINE_TYPE_STRENGTH].SetToggleDownEvent(self.__ToggleDownStrengthButton)self.refineChoiceButtonDict[self.REFINE_TYPE_GRADE].SetToggleUpEvent(lambda : self.__ToggleUpButton(self.REFINE_TYPE_GRADE))self.refineChoiceButtonDict[self.REFINE_TYPE_STEP].SetToggleUpEvent(lambda : self.__ToggleUpButton(self.REFINE_TYPE_STEP))self.refineChoiceButtonDict[self.REFINE_TYPE_STRENGTH].SetToggleUpEvent(lambda : self.__ToggleUpButton(self.REFINE_TYPE_STRENGTH))self.doRefineButton.SetEvent(self.__PressDoRefineButton)## Dialogself.wndPopupDialog = uiCommon.PopupDialog()self.currentRefineType = self.REFINE_TYPE_GRADEself.refineItemInfo = {}self.resultItemInfo = {}self.currentRecipe = {}self.wndMoney.SetText(locale.NumberToMoneyString(0))self.refineChoiceButtonDict[self.REFINE_TYPE_GRADE].Down()self.__Initialize()def Destroy(self):self.ClearDictionary()self.tooltipItem = Noneself.wndItem = 0self.wndEquip = 0self.activateButton = 0self.questionDialog = Noneself.mallButton = Noneself.inventoryTab = []self.deckTab = []self.equipmentTab = []self.tabDict = Noneself.tabButtonDict = Nonedef Close(self):if None != self.tooltipItem:self.tooltipItem.HideToolTip()self.__FlushRefineItemSlot()player.SendDragonSoulRefine(player.DRAGON_SOUL_REFINE_CLOSE)self.Hide()def Show(self):self.currentRefineType = self.REFINE_TYPE_GRADEself.wndMoney.SetText(locale.NumberToMoneyString(0))self.refineChoiceButtonDict[self.REFINE_TYPE_GRADE].Down()self.refineChoiceButtonDict[self.REFINE_TYPE_STEP].SetUp()self.refineChoiceButtonDict[self.REFINE_TYPE_STRENGTH].SetUp()self.Refresh()ui.ScriptWindow.Show(self)def SetItemToolTip(self, tooltipItem):self.tooltipItem = tooltipItem# ¹öÆ° ´*·Á ÀÖ´Â »óŸ¦ Á¦¿ÜÇÑ ¸ğµç °*È*â °ü·Ã º¯¼öµéÀ» ÃʱâÈ*.def __Initialize(self):self.currentRecipe = {}self.refineItemInfo = {}self.resultItemInfo = {}if self.REFINE_TYPE_STRENGTH == self.currentRefineType:self.refineSlotLockStartIndex = 2else:self.refineSlotLockStartIndex = 1for i in xrange(self.refineSlotLockStartIndex):self.wndRefineSlot.HideSlotBaseImage(i)self.wndMoney.SetText(locale.NumberToMoneyString(0))def __FlushRefineItemSlot(self):## Item slot settings# ¿ø·¡ Àκ¥ÀÇ ¾ÆÀÌÅÛ Ä«¿îÆ® ȸº¹for invenType, invenPos, itemCount in self.refineItemInfo.values():remainCount = player.GetItemCount(invenType, invenPos)player.SetItemCount(invenType, invenPos, remainCount + itemCount)self.__Initialize()def __ToggleUpButton(self, idx):#if self.REFINE_TYPE_GRADE == self.currentRefineType:self.refineChoiceButtonDict[idx].Down()def __ToggleDownGradeButton(self):if self.REFINE_TYPE_GRADE == self.currentRefineType:returnself.refineChoiceButtonDict[self.currentRefineType].SetUp()self.currentRefineType = self.REFINE_TYPE_GRADEself.__FlushRefineItemSlot()self.Refresh()def __ToggleDownStepButton(self):if self.REFINE_TYPE_STEP == self.currentRefineType:returnself.refineChoiceButtonDict[self.currentRefineType].SetUp()self.currentRefineType = self.REFINE_TYPE_STEPself.__FlushRefineItemSlot()self.Refresh()def __ToggleDownStrengthButton(self):if self.REFINE_TYPE_STRENGTH == self.currentRefineType:returnself.refineChoiceButtonDict[self.currentRefineType].SetUp()self.currentRefineType = self.REFINE_TYPE_STRENGTHself.__FlushRefineItemSlot()self.Refresh()def __PopUp(self, message):self.wndPopupDialog.SetText(message)self.wndPopupDialog.Open()def __SetItem(self, (invenType, invenPos), dstSlotIndex, itemCount):if dstSlotIndex &--#62;= self.refineSlotLockStartIndex:return FALSEitemVnum = player.GetItemIndex(invenType, invenPos)maxCount = player.GetItemCount(invenType, invenPos)if itemCount &--#62; maxCount:raise Exception, ("Invalid attachedItemCount(%d). (base pos (%d, %d), base itemCount(%d))" % (itemCount, invenType, invenPos, maxCount))#return FALSE# strength °*È*ÀÏ °æ¿ì, 0¹ø¿£ °*È*¼®, 1¹ø¿£ ¿ëÈ¥¼®À» ³õµµ·Ï °*Á¦ÇÔ.if DragonSoulRefineWindow.REFINE_TYPE_STRENGTH == self.currentRefineType:if self.__IsDragonSoul(itemVnum):dstSlotIndex = 1else:dstSlotIndex = 0# ºó ½½·ÔÀ̾î¾ßÇÔ.if dstSlotIndex in self.refineItemInfo:return FALSE# °*È*â¿¡ ¿Ã¸± ¼ö ÀÖ´Â ¾ÆÀÌÅÛÀÎÁö °Ë»ç.if FALSE == self.__CheckCanRefine(itemVnum):return FALSE# ²ø¾î´Ù ³õÀº ¾ÆÀÌÅÛ Ä«¿îÆ®¸¸Å* ¿ø·¡ ÀÚ¸®ÀÇ ¾ÆÀÌÅÛ Ä«¿îÆ® °¨¼Òplayer.SetItemCount(invenType, invenPos, maxCount - itemCount)self.refineItemInfo[dstSlotIndex] = (invenType, invenPos, itemCount)self.Refresh()return TRUE# °*È* °¡´ÉÇÑ ¾ÆÀÌÅÛÀÎÁö üũ# ¿ëÈ¥¼® °*È*´Â °*È* ·¹½ÃÇǸ¦ Á¤Çسõ°í ½ÃÀÛÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó,# óÀ½¿¡ °*È*â¿¡ ¿Ã¸° ¿ëÈ¥¼®¿¡ ÀÇÇØ °*È* ·¹½ÃÇÇ°¡ °áÁ¤µÈ´Ù.# ±×·¡¼* __CanRefineGrade, __CanRefineStep, __CanRefineStrength ÇÔ¼ö¿¡¼*# °*È* ·¹½ÃÇÇ°¡ ¾ø´Ù¸é(óÀ½ ¿Ã¸®´Â ¾ÆÀÌÅÛÀ̶ó¸é), °*È* ·¹½ÃÇǸ¦ ¼³Á¤ÇØÁÖ´Â ¿ªÇÒµµ ÇÑ´Ù.def __CheckCanRefine(self, vnum):if self.REFINE_TYPE_GRADE == self.currentRefineType:return self.__CanRefineGrade(vnum)elif self.REFINE_TYPE_STEP == self.currentRefineType:return self.__CanRefineStep(vnum)elif self.REFINE_TYPE_STRENGTH == self.currentRefineType:return self.__CanRefineStrength(vnum)else:return FALSEreturn TRUEdef __CanRefineGrade (self, vnum):ds_info = self.__GetDragonSoulTypeInfo(vnum)if DragonSoulRefineWindow.INVALID_DRAGON_SOUL_INFO == ds_info:self.__PopUp(locale.DRAGON_SOUL_IS_NOT_DRAGON_SOUL)return FALSEif self.currentRecipe:ds_type, grade, step, strength = ds_infocur_refine_ds_type, cur_refine_grade, cur_refine_step, cur_refine_strength = self.currentRecipe["ds_info"]if not (cur_refine_ds_type == ds_type and cur_refine_grade == grade):self.__PopUp(locale.DRAGON_SOUL_INVALID_DRAGON_SOUL)return FALSE# °*È* â¿¡ óÀ½ ¾ÆÀÌÅÛÀ» ¿Ã¸®´Â °æ¿ì, °*È* Àç·á¿¡ °üÇÑ Á¤º¸°¡ ¾ø´Ù.# ¿ëÈ¥¼® °*È*°¡, ·¹½ÃÇǸ¦ °¡Áö°í ½ÃÀÛÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, °*È*â¿¡ óÀ½ ¿Ã¸®´Â ¾ÆÀÌÅÛÀÌ ¹«¾ùÀ̳Ŀ¡ µû¶ó,# ¹«¾ùÀ» °*È*ÇÏ°í, Àç·á°¡ ¹«¾ùÀÎÁö(ÀÌÇÏ ·¹½ÃÇÇ)°¡ Á¤ÇØÁø´Ù.# ·¹½ÃÇÇ°¡ ¾ø´Ù¸é, óÀ½ ¿Ã¸° ¾ÆÀÌÅÛÀ̶ó »ı°¢ÇÏ°í, vnumÀ» ¹ÙÅÁÀ¸·Î ·¹½ÃÇǸ¦ ¼ÂÆÃ.else:self.currentRecipe = self.__GetRefineGradeRecipe(vnum)if self.currentRecipe:self.refineSlotLockStartIndex = self.currentRecipe["need_count"]self.wndMoney.SetText(locale.NumberToMoneyString(self.currentRecipe["fee"]))return TRUEelse:# °*È* Á¤º¸ ¼ÂÆÿ¡ ½ÇÆĞÇÏ¸é ¿Ã¸± ¼ö ¾ø´Â ¾ÆÀÌÅÛÀ¸·Î ÆÇ´Ü.self.__PopUp(locale.DRAGON_SOUL_CANNOT_REFINE)return FALSEdef __CanRefineStep (self, vnum):ds_info = self.__GetDragonSoulTypeInfo(vnum)if DragonSoulRefineWindow.INVALID_DRAGON_SOUL_INFO == ds_info:self.__PopUp(locale.DRAGON_SOUL_IS_NOT_DRAGON_SOUL)return FALSEif self.currentRecipe:ds_type, grade, step, strength = ds_infocur_refine_ds_type, cur_refine_grade, cur_refine_step, cur_refine_strength = self.currentRecipe["ds_info"]if not (cur_refine_ds_type == ds_type and cur_refine_grade == grade and cur_refine_step == step):self.__PopUp(locale.DRAGON_SOUL_INVALID_DRAGON_SOUL)return FALSE# °*È* â¿¡ óÀ½ ¾ÆÀÌÅÛÀ» ¿Ã¸®´Â °æ¿ì, Àç·á¿¡ °üÇÑ Á¤º¸°¡ ¾ø´Ù.# ¿ëÈ¥¼® °*È*°¡, ·¹½ÃÇǸ¦ °¡Áö°í ½ÃÀÛÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, °*È*â¿¡ óÀ½ ¿Ã¸®´Â ¾ÆÀÌÅÛÀÌ ¹«¾ùÀ̳Ŀ¡ µû¶ó,# ¹«¾ùÀ» °*È*ÇÏ°í, Àç·á°¡ ¹«¾ùÀÎÁö(ÀÌÇÏ ·¹½ÃÇÇ)°¡ Á¤ÇØÁø´Ù.# ·¹½ÃÇÇ°¡ ¾ø´Ù¸é, óÀ½ ¿Ã¸° ¾ÆÀÌÅÛÀ̶ó »ı°¢ÇÏ°í, vnumÀ» ¹ÙÅÁÀ¸·Î ·¹½ÃÇǸ¦ ¼ÂÆÃ.else:self.currentRecipe = self.__GetRefineStepRecipe(vnum)if self.currentRecipe:self.refineSlotLockStartIndex = self.currentRecipe["need_count"]self.wndMoney.SetText(locale.NumberToMoneyString(self.currentRecipe["fee"]))return TRUEelse:# °*È* Á¤º¸ ¼ÂÆÿ¡ ½ÇÆĞÇÏ¸é ¿Ã¸± ¼ö ¾ø´Â ¾ÆÀÌÅÛÀ¸·Î ÆÇ´Ü.self.__PopUp(locale.DRAGON_SOUL_CANNOT_REFINE)return FALSEdef __CanRefineStrength (self, vnum):# ¿ëÈ¥¼®ÀÎ °æ¿ì, ´õ ÀÌ»ó strength °*È*¸¦ ÇÒ ¼ö ¾ø´ÂÁö üũÇؾßÇÔ.if self.__IsDragonSoul(vnum):ds_type, grade, step, strength = self.__GetDragonSoulTypeInfo(vnum)import dragon_soul_refine_settingsif strength &--#62;= dragon_soul_refine_settings.dragon_soul_refine_info[ds_type]["strength_max_table"][grade][step]:self.__PopUp(locale.DRAGON_SOUL_CANNOT_REFINE_MORE)return FALSEelse:return TRUE# strength °*È*ÀÇ °æ¿ì, refine_recipe°¡ ¿ëÈ¥¼®ÀÇ Á¾·ù°¡ ¾Æ´Ñ, °*È*¼®ÀÇ Á¾·ù¿¡ µû¶ó ´Ş¶óÁø´Ù.# µû¶ó¼* ¿ëÈ¥¼®ÀÌ ¾Æ´Ï¶ó¸é,# ÀÌ¹Ì ·¹½ÃÇÇ°¡ ÀÖ´Â °æ¿ì´Â, °*È*¼®ÀÌ °*È*â¿¡ ÀÖ´Ù´Â °ÍÀ̹ǷÎ, return FALSE# ·¹½ÃÇÇ°¡ ¾ø´Â °æ¿ì´Â, °*È*¼®ÀÎÁö È®ÀÎÇÏ°í, ·¹½ÃÇǸ¦ ¼ÂÆÃÇÑ´Ù.else:if self.currentRecipe:self.__PopUp(locale.DRAGON_SOUL_IS_NOT_DRAGON_SOUL)return FALSEelse:refineRecipe = self.__GetRefineStrengthInfo(vnum)if refineRecipe:self.currentRecipe = refineRecipeself.wndMoney.SetText(locale.NumberToMoneyString(self.currentRecipe["fee"]))return TRUEelse:# ·¹½ÃÇǸ¦ ¼ÂÆÃÇÒ ¼ö ¾ø´Â °æ¿ìself.__PopUp(locale.DRAGON_SOUL_NOT_DRAGON_SOUL_REFINE_STONE)return FALSEdef __GetRefineGradeRecipe (self, vnum):ds_type, grade, step, strength = self.__GetDragonSoulTypeInfo(vnum)try:import dragon_soul_refine_settingsreturn {"ds_info" : (ds_type, grade, step, strength),"need_count" : dragon_soul_refine_settings.dragon_soul_refine_info[ds_type]["grade_need_count"][grade],"fee" : dragon_soul_refine_settings.dragon_soul_refine_info[ds_type]["grade_fee"][grade]}except:return Nonedef __GetRefineStepRecipe (self, vnum):ds_type, grade, step, strength = self.__GetDragonSoulTypeInfo(vnum)try:import dragon_soul_refine_settingsreturn {"ds_info" : (ds_type, grade, step, strength),"need_count" : dragon_soul_refine_settings.dragon_soul_refine_info[ds_type]["step_need_count"][step],"fee" : dragon_soul_refine_settings.dragon_soul_refine_info[ds_type]["step_fee"][step]}except:return None# strength °*È*ÀÇ °æ¿ì, refineInfo´Â °*È*¼®¿¡ µû¶ó ´Ş¶óÁø´Ù.def __GetRefineStrengthInfo (self, itemVnum):try:# À̳ğÀÇ À§Ä¡¸¦ ¾îÂîÇÏÁö....# °*È*¼®ÀÌ ¾Æ´Ï¸é ¾ÈµÊ.item.SelectItem(itemVnum)if not (item.ITEM_TYPE_MATERIAL == item.GetItemType()and (item.MATERIAL_DS_REFINE_NORMAL &--#60;= item.GetItemSubType() and item.GetItemSubType() &--#60;= item.MATERIAL_DS_REFINE_HOLLY)):return Noneimport dragon_soul_refine_settingsreturn { "fee" : dragon_soul_refine_settings.strength_fee[item.GetItemSubType()] }except:return Nonedef __IsDragonSoul(self, vnum):item.SelectItem(vnum)return item.GetItemType() == item.ITEM_TYPE_DS# ¿ëÈ¥¼® Vnum¿¡ ´ëÇÑ comment# ITEM VNUMÀ» 10¸¸ ÀÚ¸®ºÎÅÍ, FEDCBA¶ó°í ÇÑ´Ù¸é# FE : ¿ëÈ¥¼® Á¾·ù. D : µî±Ş# C : ´Ü°è B : °*È*# A : ¿©¹úÀÇ ¹øÈ£µé...def __GetDragonSoulTypeInfo(self, vnum):if not self.__IsDragonSoul(vnum):return DragonSoulRefineWindow.INVALID_DRAGON_SOUL_INFOds_type = vnum / 10000grade = vnum % 10000 /1000step = vnum % 1000 / 100strength = vnum % 100 / 10return (ds_type, grade, step, strength)def __MakeDragonSoulVnum(self, ds_type, grade, step, strength):return ds_type * 10000 + grade * 1000 + step * 100 + strength * 10## ºó ½½·Ô ¼±Åà Eventdef __SelectRefineEmptySlot(self, selectedSlotPos):try:if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:returnif selectedSlotPos &--#62;= self.refineSlotLockStartIndex:returnif mouseModule.mouseController.isAttached():attachedSlotType = mouseModule.mouseController.GetAttachedType()attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()mouseModule.mouseController.DeattachObject()if uiPrivateShopBuilder.IsBuildingPrivateShop():chat.AppendChat(chat.CHAT_TYPE_INFO, locale.MOVE_ITEM_FAILURE_PRIVATE_SHOP)returnattachedInvenType = player.SlotTypeToInvenType(attachedSlotType)if player.INVENTORY == attachedInvenType and player.IsEquipmentSlot(attachedSlotPos):returnif player.INVENTORY != attachedInvenType and player.DRAGON_SOUL_INVENTORY != attachedInvenType:returnif TRUE == self.__SetItem((attachedInvenType, attachedSlotPos), selectedSlotPos, attachedItemCount):self.Refresh()except Exception, e:import dbgdbg.TraceError("Exception : __SelectRefineEmptySlot, %s" % e)# Ŭ¸¯À¸·Î ½½·Ô¿¡¼* »èÁ¦.def __SelectRefineItemSlot(self, selectedSlotPos):if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:returntry:if not selectedSlotPos in self.refineItemInfo:# »õ·Î¿î ¾ÆÀÌÅÛÀ» °*È*â¿¡ ¿Ã¸®´Â ÀÛ¾÷.if mouseModule.mouseController.isAttached():attachedSlotType = mouseModule.mouseController.GetAttachedType()attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()mouseModule.mouseController.DeattachObject()if uiPrivateShopBuilder.IsBuildingPrivateShop():chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP)returnattachedInvenType = player.SlotTypeToInvenType(attachedSlotType)if player.INVENTORY == attachedInvenType and player.IsEquipmentSlot(attachedSlotPos):returnif player.INVENTORY != attachedInvenType and player.DRAGON_SOUL_INVENTORY != attachedInvenType:returnself.AutoSetItem((attachedInvenType, attachedSlotPos), 1)returnelif mouseModule.mouseController.isAttached():returnattachedInvenType, attachedSlotPos, attachedItemCount = self.refineItemInfo[selectedSlotPos]selectedItemVnum = player.GetItemIndex(attachedInvenType, attachedSlotPos)# °*È*â¿¡¼* »èÁ¦ ¹× ¿ø·¡ Àκ¥ÀÇ ¾ÆÀÌÅÛ Ä«¿îÆ® ȸº¹invenType, invenPos, itemCount = self.refineItemInfo[selectedSlotPos]remainCount = player.GetItemCount(invenType, invenPos)player.SetItemCount(invenType, invenPos, remainCount + itemCount)del self.refineItemInfo[selectedSlotPos]# °*È*âÀÌ ºñ¾ú´Ù¸é, ÃʱâÈ*if not self.refineItemInfo:self.__Initialize()else:item.SelectItem(selectedItemVnum)# ¾ø¾Ø ¾ÆÀÌÅÛÀÌ °*È*¼®À̾ú´Ù¸é °*È* ·¹Çǽà ÃʱâÈ*if (item.ITEM_TYPE_MATERIAL == item.GetItemType()and (item.MATERIAL_DS_REFINE_NORMAL &--#60;= item.GetItemSubType() and item.GetItemSubType() &--#60;= item.MATERIAL_DS_REFINE_HOLLY)):self.currentRecipe = {}self.wndMoney.SetText(localeInfo.NumberToMoneyString(0))# ¿ëÈ¥¼®À̾ú´Ù¸é,# strength°*È*°¡ ¾Æ´Ñ °æ¿ì, °*È*â¿¡ ´Ù¸¥ ¿ëÈ¥¼®ÀÌ ³²¾ÆÀÖÀ¸¹Ç·Î, ·¹½ÃÇǸ¦ ÃʱâÈ*ÇÏ¸é ¾ÈµÊ.# strength°*È*ÀÇ °æ¿ì, °*È* ·¹½ÃÇÇ´Â °*È*¼®¿¡ Á¾¼ÓµÈ °ÍÀ̹ǷΠ´Ù¸¥ ó¸®ÇÒ ÇÊ¿ä°¡ ¾øÀ½.else:passexcept Exception, e:import dbgdbg.TraceError("Exception : __SelectRefineItemSlot, %s" % e)self.Refresh()def __OverInRefineItem(self, slotIndex):if self.refineItemInfo.has_key(slotIndex):inven_type, inven_pos, item_count = self.refineItemInfo[slotIndex]self.tooltipItem.SetInventoryItem(inven_pos, inven_type)def __OverInResultItem(self, slotIndex):if self.resultItemInfo.has_key(slotIndex):inven_type, inven_pos, item_count = self.resultItemInfo[slotIndex]self.tooltipItem.SetInventoryItem(inven_pos, inven_type)def __OverOutItem(self):if self.tooltipItem:self.tooltipItem.HideToolTip()def __PressDoRefineButton(self):for i in xrange(self.refineSlotLockStartIndex):if not i in self.refineItemInfo:self.wndPopupDialog.SetText(locale.DRAGON_SOUL_NOT_ENOUGH_MATERIAL)self.wndPopupDialog.Open()returnplayer.SendDragonSoulRefine(DragonSoulRefineWindow.DS_SUB_HEADER_DIC[self.currentRefineType], self.refineItemInfo)def OnPressEscapeKey(self):self.Close()return TRUEdef Refresh(self):self.__RefreshRefineItemSlot()self.__ClearResultItemSlot()def __RefreshRefineItemSlot(self):try:for slotPos in xrange(self.wndRefineSlot.GetSlotCount()):self.wndRefineSlot.ClearSlot(slotPos)if slotPos &--#60; self.refineSlotLockStartIndex:# self.refineItemInfo[slotPos]ÀÇ Á¤º¸È®ÀÎ# (½ÇÁ¦·Î ¾ÆÀÌÅÛÀÌ Á¸ÀçÇÏ´ÂÁö È®ÀÎ)# Á¸Àç -&--#62; ¾ÆÀÌÅÛ ¾ÆÀÌÄÜÀ» ½½·Ô¿¡ ¼ÂÆÃ.# ºñÁ¸Àç -&--#62; ¾ÆÀÌÅÛÀÌ ¾øÀ¸¹Ç·Î °*È*â¿¡¼* »èÁ¦.if slotPos in self.refineItemInfo:invenType, invenPos, itemCount = self.refineItemInfo[slotPos]itemVnum = player.GetItemIndex(invenType, invenPos)# if itemVnum:if itemVnum:self.wndRefineSlot.SetItemSlot(slotPos, player.GetItemIndex(invenType, invenPos), itemCount)else:del self.refineItemInfo[slotPos]# ºó ½½·Ô¿¡ reference ¾ÆÀÌÄÜÀ» alpha 0.5·Î ¼ÂÆÃ.if not slotPos in self.refineItemInfo:try:reference_vnum = 0# strength °*È*ÀÏ ¶§´Â,# 0¹ø ½½·Ô¿¡ °*È*¼®À», 1¹ø ½½·Ô¿¡ ¿ëÈ¥¼®À» ³õ´Â´Ù.if DragonSoulRefineWindow.REFINE_TYPE_STRENGTH == self.currentRefineType:if DragonSoulRefineWindow.REFINE_STONE_SLOT == slotPos:reference_vnum = 100300else:reference_vnum = self.__MakeDragonSoulVnum(*self.currentRecipe["ds_info"])if 0 != reference_vnum:item.SelectItem(reference_vnum)itemIcon = item.GetIconImage()(width, height) = item.GetItemSize()self.wndRefineSlot.SetSlot(slotPos, 0, width, height, itemIcon, (1.0, 1.0, 1.0, 0.5))# slot ¿ìÃø ÇÏ´Ü¿¡ ¼ıÀÚ ¶ß¸é ¾È ¿¹»İ...self.wndRefineSlot.SetSlotCount(slotPos, 0)except:pass# refineSlotLockStartIndex º¸´Ù ÀÛÀº ½½·ÔÀº ´İÈù À̹ÌÁö¸¦ º¸¿©ÁÖ¸é ¾ÈµÊ.self.wndRefineSlot.HideSlotBaseImage(slotPos)# slotPos &--#62;= self.refineSlotLockStartIndex:else:# Á¤»óÀûÀÎ °æ¿ì¶ó¸é ÀÌ if¹®¿¡ µé¾î°¥ ÀÏÀº ¾ø°ÚÁö¸¸,# (¾ÖÃÊ¿¡ À妽º°¡ refineSlotLockStartIndex ÀÌ»óÀÎ ½½·Ô¿¡´Â ¾ÆÀÌÅÛÀ» ³ÖÁö ¸øÇÏ°Ô Ç߱⠶§¹®)# Ȥ½Ã ¸ğ¸¦ ¿¡·¯¿¡ ´ëºñÇÔ.if slotPos in self.refineItemInfo:invenType, invenPos, itemCount = self.refineItemInfo[slotPos]remainCount = player.GetItemCount(invenType, invenPos)player.SetItemCount(invenType, invenPos, remainCount + itemCount)del self.refineItemInfo[selectedSlotPos]# refineSlotLockStartIndex ÀÌ»óÀÎ ½½·ÔÀº ´İÈù À̹ÌÁö¸¦ º¸¿©Áà¾ßÇÔ.self.wndRefineSlot.ShowSlotBaseImage(slotPos)# °*È*â¿¡ ¾Æ¹«·± ¾ÆÀÌÅÛÀÌ ¾ø´Ù¸é, ÃʱâÈ*ÇØÁÜ.# À§¿¡¼* Áß°£ Áß°£¿¡ "del self.refineItemInfo[slotPos]"¸¦ Ç߱⠶§¹®¿¡,# ¿©±â¼* Çѹø üũÇØÁà¾ßÇÔ.if not self.refineItemInfo:self.__Initialize()self.wndRefineSlot.RefreshSlot()except Exception, e:import dbgdbg.TraceError("Exception : __RefreshRefineItemSlot, %s" % e)def __GetEmptySlot(self, itemVnum = 0):# STRENGTH °*È*ÀÇ °æ¿ì, ¿ëÈ¥¼® ½½·Ô°ú °*È*¼® ½½·ÔÀÌ ±¸ºĞµÇ¾îÀֱ⠋š¹®¿¡# vnumÀ» ¾Ë¾Æ¾ß ÇÑ´Ù.if DragonSoulRefineWindow.REFINE_TYPE_STRENGTH == self.currentRefineType:if 0 == itemVnum:return -1if self.__IsDragonSoul(itemVnum):if not DragonSoulRefineWindow.DRAGON_SOUL_SLOT in self.refineItemInfo:return DragonSoulRefineWindow.DRAGON_SOUL_SLOTelse:if not DragonSoulRefineWindow.REFINE_STONE_SLOT in self.refineItemInfo:return DragonSoulRefineWindow.REFINE_STONE_SLOTelse:for slotPos in xrange(self.wndRefineSlot.GetSlotCount()):if not slotPos in self.refineItemInfo:return slotPosreturn -1def AutoSetItem(self, (invenType, invenPos), itemCount):itemVnum = player.GetItemIndex(invenType, invenPos)emptySlot = self.__GetEmptySlot(itemVnum)if -1 == emptySlot:returnself.__SetItem((invenType, invenPos), emptySlot, itemCount)def __ClearResultItemSlot(self):self.wndResultSlot.ClearSlot(0)self.resultItemInfo = {}def RefineSucceed(self, inven_type, inven_pos):self.__Initialize()self.Refresh()itemCount = player.GetItemCount(inven_type, inven_pos)if itemCount &--#62; 0:self.resultItemInfo[0] = (inven_type, inven_pos, itemCount)self.wndResultSlot.SetItemSlot(0, player.GetItemIndex(inven_type, inven_pos), itemCount)def RefineFail(self, reason, inven_type, inven_pos):if net.DS_SUB_HEADER_REFINE_ [img]import uiimport playerimport mouseModuleimport netimport appimport sndimport itemimport chatimport grpimport uiScriptLocaleimport uiRefineimport uiAttachMetinimport uiPickMoneyimport uiCommonimport uiPrivateShopBuilderimport localeimport constInfoimport imeimport uiInventoryimport sysITEM_FLAG_APPLICABLE = 1 &--#60;&--#60; 14# ¿ëÈ¥¼® Vnum¿¡ ´ëÇÑ comment# ITEM VNUMÀ» 10¸¸ ÀÚ¸®ºÎÅÍ, FEDCBA¶ó°í ÇÑ´Ù¸é# FE : ¿ëÈ¥¼® Á¾·ù. D : µî±Ş# C : ´Ü°è B : °*È*# A : ¿©¹úÀÇ ¹øÈ£µé...class DragonSoulWindow(ui.ScriptWindow):KIND_TAP_TITLES = [uiScriptLocale.DRAGONSOUL_TAP_TITLE_1, uiScriptLocale.DRAGONSOUL_TAP_TITLE_2,uiScriptLocale.DRAGONSOUL_TAP_TITLE_3, uiScriptLocale.DRAGONSOUL_TAP_TITLE_4, uiScriptLocale.DRAGONSOUL_TAP_TITLE_5, uiScriptLocale.DRAGONSOUL_TAP_TITLE_6]def __init__(self):ui.ScriptWindow.__init__(self)self.questionDialog = Noneself.tooltipItem = Noneself.sellingSlotNumber = -1self.isLoaded = 0self.isActivated = FALSEself.DSKindIndex = 0self.tabDict = Noneself.tabButtonDict = Noneself.deckPageIndex = 0self.inventoryPageIndex = 0self.SetWindowName("DragonSoulWindow")self.__LoadWindow()def __del__(self):ui.ScriptWindow.__del__(self)def Show(self):self.__LoadWindow()ui.ScriptWindow.Show(self)def __LoadWindow(self):if self.isLoaded == 1:returnself.isLoaded = 1try:pyScrLoader = ui.PythonScriptLoader()pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "dragonsoulwindow.py")except:import exceptionexception.Abort("dragonsoulwindow.LoadWindow.LoadObject")try:if locale.IsARABIC():self.board = self.GetChild("Equipment_Base")self.board.SetScale(-1.0, 1.0)self.board.SetRenderingRect(-1.0, 0.0, 1.0, 0.0)self.board = self.GetChild("Tab_01")self.board.SetScale(-1.0, 1.0)self.board.SetRenderingRect(-1.0, 0.0, 1.0, 0.0)self.board = self.GetChild("Tab_02")self.board.SetScale(-1.0, 1.0)self.board.SetRenderingRect(-1.0, 0.0, 1.0, 0.0)self.board = self.GetChild("Tab_03")self.board.SetScale(-1.0, 1.0)self.board.SetRenderingRect(-1.0, 0.0, 1.0, 0.0)self.board = self.GetChild("Tab_04")self.board.SetScale(-1.0, 1.0)self.board.SetRenderingRect(-1.0, 0.0, 1.0, 0.0)self.board = self.GetChild("Tab_05")self.board.SetScale(-1.0, 1.0)self.board.SetRenderingRect(-1.0, 0.0, 1.0, 0.0)self.board = self.GetChild("Tab_06")self.board.SetScale(-1.0, 1.0)self.board.SetRenderingRect(-1.0, 0.0, 1.0, 0.0)wndItem = self.GetChild("ItemSlot")wndEquip = self.GetChild("EquipmentSlot")self.activateButton = self.GetChild("activate")self.deckTab = []self.deckTab.append(self.GetChild("deck1"))self.deckTab.append(self.GetChild("deck2"))self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))self.inventoryTab = []self.inventoryTab.append(self.GetChild("Inventory_Tab_01"))self.inventoryTab.append(self.GetChild("Inventory_Tab_02"))self.inventoryTab.append(self.GetChild("Inventory_Tab_03"))self.inventoryTab.append(self.GetChild("Inventory_Tab_04"))self.inventoryTab.append(self.GetChild("Inventory_Tab_05"))self.tabDict = {0 : self.GetChild("Tab_01"),1 : self.GetChild("Tab_02"),2 : self.GetChild("Tab_03"),3 : self.GetChild("Tab_04"),4 : self.GetChild("Tab_05"),5 : self.GetChild("Tab_06"),}self.tabButtonDict = {0 : self.GetChild("Tab_Button_01"),1 : self.GetChild("Tab_Button_02"),2 : self.GetChild("Tab_Button_03"),3 : self.GetChild("Tab_Button_04"),4 : self.GetChild("Tab_Button_05"),5 : self.GetChild("Tab_Button_06"),}self.tabText = self.GetChild("tab_text_area")except:import exceptionexception.Abort("InventoryWindow.LoadWindow.BindObject")## DragonSoul Kind Tapfor (tabKey, tabButton) in self.tabButtonDict.items():tabButton.SetEvent(ui.__mem_func__(self.SetDSKindIndex), tabKey)## ItemwndItem.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))wndItem.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))wndItem.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))wndItem.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))wndItem.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))wndItem.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))## EquipmentwndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptyEquipSlot))wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectEquipItemSlot))wndEquip.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseEquipItemSlot))wndEquip.SetUseSlotEvent(ui.__mem_func__(self.UseEquipItemSlot))wndEquip.SetOverInItemEvent(ui.__mem_func__(self.OverInEquipItem))wndEquip.SetOverOutItemEvent(ui.__mem_func__(self.OverOutEquipItem))## Deckself.deckTab[0].SetToggleDownEvent(lambda arg=0: self.SetDeckPage(arg))self.deckTab[1].SetToggleDownEvent(lambda arg=1: self.SetDeckPage(arg))self.deckTab[0].SetToggleUpEvent(lambda arg=0: self.__DeckButtonDown(arg))self.deckTab[1].SetToggleUpEvent(lambda arg=1: self.__DeckButtonDown(arg))self.deckTab[0].Down()## Grade buttonself.inventoryTab[0].SetEvent(lambda arg=0: self.SetInventoryPage(arg))self.inventoryTab[1].SetEvent(lambda arg=1: self.SetInventoryPage(arg))self.inventoryTab[2].SetEvent(lambda arg=2: self.SetInventoryPage(arg))self.inventoryTab[3].SetEvent(lambda arg=3: self.SetInventoryPage(arg))self.inventoryTab[4].SetEvent(lambda arg=4: self.SetInventoryPage(arg))self.inventoryTab[0].Down()## Etcself.wndItem = wndItemself.wndEquip = wndEquipself.dlgQuestion = uiCommon.QuestionDialog2()self.dlgQuestion.Close()self.activateButton.SetToggleDownEvent(ui.__mem_func__(self.ActivateButtonClick))self.activateButton.SetToggleUpEvent(ui.__mem_func__(self.ActivateButtonClick))self.wndPopupDialog = uiCommon.PopupDialog()##self.listHighlightedSlot = []## Refreshself.SetInventoryPage(0)self.RefreshItemSlot()self.RefreshEquipSlotWindow()self.RefreshBagSlotWindow()self.SetDSKindIndex(0)self.activateButton.Enable()self.deckTab[self.deckPageIndex].Down()self.activateButton.SetUp()def Destroy(self):self.ClearDictionary()self.tooltipItem = Noneself.wndItem = 0self.wndEquip = 0self.activateButton = 0self.questionDialog = Noneself.mallButton = Noneself.inventoryTab = []self.deckTab = []self.equipmentTab = []self.tabDict = Noneself.tabButtonDict = Nonedef Close(self):if None != self.tooltipItem:self.tooltipItem.HideToolTip()self.Hide()def __DeckButtonDown(self, deck):self.deckTab[deck].Down()def SetInventoryPage(self, page):if self.inventoryPageIndex != page:self.__HighlightSlot_ClearCurrentPage()self.inventoryPageIndex = pageself.inventoryTab[(page+1)%5].SetUp()self.inventoryTab[(page+2)%5].SetUp()self.inventoryTab[(page+3)%5].SetUp()self.inventoryTab[(page+4)%5].SetUp()self.RefreshBagSlotWindow()def SetItemToolTip(self, tooltipItem):self.tooltipItem = tooltipItemdef RefreshItemSlot(self):self.RefreshBagSlotWindow()self.RefreshEquipSlotWindow()def RefreshEquipSlotWindow(self):for i in xrange(6):slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(player.INVENTORY, player.DRAGON_SOUL_EQUIPMENT_SLOT_START + i)itemVnum = player.GetItemIndex(slotNumber)self.wndEquip.SetItemSlot(player.DRAGON_SOUL_EQUIPMENT_SLOT_START + i, itemVnum, 0)self.wndEquip.EnableSlot(player.DRAGON_SOUL_EQUIPMENT_SLOT_START + i)if itemVnum != 0:item.SelectItem(itemVnum)for j in xrange(item.LIMIT_MAX_NUM):(limitType, limitValue) = item.GetLimit(j)# ¹Ø¿¡¼* remain_timeÀÌ 0ÀÌÇÏÀÎÁö üũ Çϱ⠶§¹®¿¡ ÀÓÀÇÀÇ ¾ç¼ö·Î ÃʱâÈ*remain_time = 999# ÀÏ´Ü ÇöÀç ŸÀ̸Ӵ ÀÌ ¼¼°³ »ÓÀÌ´Ù.if item.LIMIT_REAL_TIME == limitType:remain_time = player.GetItemMetinSocket(player.INVENTORY, slotNumber, 0) - app.GetGlobalTimeStamp()elif item.LIMIT_REAL_TIME_START_FIRST_USE == limitType:remain_time = player.GetItemMetinSocket(player.INVENTORY, slotNumber, 0) - app.GetGlobalTimeStamp()elif item.LIMIT_TIMER_BASED_ON_WEAR == limitType:remain_time = player.GetItemMetinSocket(player.INVENTORY, slotNumber, 0)if remain_time &--#60;= 0:self.wndEquip.DisableSlot(player.DRAGON_SOUL_EQUIPMENT_SLOT_START + i)breakself.wndEquip.RefreshSlot()def RefreshStatus(self):self.RefreshItemSlot()def __InventoryLocalSlotPosToGlobalSlotPos(self, window_type, local_slot_pos):if player.INVENTORY == window_type:return self.deckPageIndex * player.DRAGON_SOUL_EQUIPMENT_FIRST_SIZE + local_slot_posreturn (self.DSKindIndex * 5 * player.DRAGON_SOUL_PAGE_SIZE) + self.inventoryPageIndex * player.DRAGON_SOUL_PAGE_SIZE + local_slot_posdef RefreshBagSlotWindow(self):getItemVNum=player.GetItemIndexgetItemCount=player.GetItemCountsetItemVnum=self.wndItem.SetItemSlotfor i in xrange(player.DRAGON_SOUL_PAGE_SIZE):self.wndItem.EnableSlot(i)#&--#60;- dragon soul kindslotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(player.DRAGON_SOUL_INVENTORY, i)itemCount = getItemCount(player.DRAGON_SOUL_INVENTORY, slotNumber)if 0 == itemCount:self.wndItem.ClearSlot(i)continueelif 1 == itemCount:itemCount = 0itemVnum = getItemVNum(player.DRAGON_SOUL_INVENTORY, slotNumber)setItemVnum(i, itemVnum, itemCount)if itemVnum != 0:item.SelectItem(itemVnum)for j in xrange(item.LIMIT_MAX_NUM):(limitType, limitValue) = item.GetLimit(j)# ¹Ø¿¡¼* remain_timeÀÌ À½¼öÀÎÁö üũ Çϱ⠶§¹®¿¡ ÀÓÀÇÀÇ ¾ç¼ö·Î ÃʱâÈ*remain_time = 999if item.LIMIT_REAL_TIME == limitType:remain_time = player.GetItemMetinSocket(player.DRAGON_SOUL_INVENTORY, slotNumber, 0)elif item.LIMIT_REAL_TIME_START_FIRST_USE == limitType:remain_time = player.GetItemMetinSocket(player.DRAGON_SOUL_INVENTORY, slotNumber, 0)elif item.LIMIT_TIMER_BASED_ON_WEAR == limitType:remain_time = player.GetItemMetinSocket(player.DRAGON_SOUL_INVENTORY, slotNumber, 0)if remain_time &--#60;= 0:self.wndItem.DisableSlot(i)breakself.__HighlightSlot_RefreshCurrentPage()self.wndItem.RefreshSlot()def ShowToolTip(self, window_type, slotIndex):if None != self.tooltipItem:if player.INVENTORY == window_type:self.tooltipItem.SetInventoryItem(slotIndex)else:self.tooltipItem.SetInventoryItem(slotIndex, player.DRAGON_SOUL_INVENTORY)def OnPressEscapeKey(self):self.Close()return TRUEdef OnTop(self):if None != self.tooltipItem:self.tooltipItem.SetTop()# item slot °ü·Ã ÇÔ¼ödef OverOutItem(self):self.wndItem.SetUsableItem(FALSE)if None != self.tooltipItem:self.tooltipItem.HideToolTip()def OverInItem(self, overSlotPos):self.wndItem.DeactivateSlot(overSlotPos)overSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(player.DRAGON_SOUL_INVENTORY, overSlotPos)try:self.listHighlightedSlot.remove(overSlotPos)except:passself.wndItem.SetUsableItem(FALSE)self.ShowToolTip(player.DRAGON_SOUL_INVENTORY, overSlotPos)def __UseItem(self, slotIndex):ItemVNum = player.GetItemIndex(player.DRAGON_SOUL_INVENTORY, slotIndex)if 0 == player.GetItemMetinSocket(player.DRAGON_SOUL_INVENTORY, slotIndex, 0):self.wndPopupDialog.SetText(locale.DRAGON_SOUL_EXPIRED)self.wndPopupDialog.Open()returnself.__EquipItem(slotIndex)def __EquipItem(self, slotIndex):ItemVNum = player.GetItemIndex(player.DRAGON_SOUL_INVENTORY, slotIndex)item.SelectItem(ItemVNum)subType = item.GetItemSubType()equipSlotPos = player.DRAGON_SOUL_EQUIPMENT_SLOT_START + self.deckPageIndex * player.DRAGON_SOUL_EQUIPMENT_FIRST_SIZE + subTypesrcItemPos = (player.DRAGON_SOUL_INVENTORY, slotIndex)dstItemPos = (player.INVENTORY, equipSlotPos)self.__OpenQuestionDialog(TRUE, srcItemPos, dstItemPos)def SelectItemSlot(self, itemSlotIndex):if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:returnitemSlotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(player.DRAGON_SOUL_INVENTORY, itemSlotIndex)if mouseModule.mouseController.isAttached():attachedSlotType = mouseModule.mouseController.GetAttachedType()attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()attachedItemVID = mouseModule.mouseController.GetAttachedItemIndex()attachedInvenType = player.SlotTypeToInvenType(attachedSlotType)if player.RESERVED_WINDOW != attachedInvenType:net.SendItemUseToItemPacket(attachedInvenType, attachedSlotPos, player.DRAGON_SOUL_INVENTORY, itemSlotIndex)mouseModule.mouseController.DeattachObject()else:selectedItemVNum = player.GetItemIndex(player.DRAGON_SOUL_INVENTORY, itemSlotIndex)itemCount = player.GetItemCount(player.DRAGON_SOUL_INVENTORY, itemSlotIndex)mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_DRAGON_SOUL_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)self.wndItem.SetUseMode(FALSE)snd.PlaySound("sound/ui/pick.wav")def SelectEmptySlot(self, selectedSlotPos):if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:returnselectedSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(player.DRAGON_SOUL_INVENTORY, selectedSlotPos)print "__debug", selectedSlotPosif mouseModule.mouseController.isAttached():attachedSlotType = mouseModule.mouseController.GetAttachedType()attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()attachedInvenType = player.SlotTypeToInvenType(attachedSlotType)if player.SLOT_TYPE_PRIVATE_SHOP == attachedSlotType:mouseModule.mouseController.RunCallBack("INVENTORY")elif player.SLOT_TYPE_SHOP == attachedSlotType:net.SendShopBuyPacket(attachedSlotPos)elif player.SLOT_TYPE_SAFEBOX == attachedSlotType:if player.ITEM_MONEY == attachedItemIndex:net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())snd.PlaySound("sound/ui/money.wav")else:net.SendSafeboxCheckoutPacket(attachedSlotPos, player.DRAGON_SOUL_INVENTORY, selectedSlotPos)elif player.SLOT_TYPE_MALL == attachedSlotType:net.SendMallCheckoutPacket(attachedSlotPos, player.DRAGON_SOUL_INVENTORY, selectedSlotPos)elif player.RESERVED_WINDOW != attachedInvenType:if player.IsDSEquipmentSlot(attachedInvenType, attachedSlotPos):srcItemPos = (attachedInvenType, attachedSlotPos)dstItemPos = (player.DRAGON_SOUL_INVENTORY, selectedSlotPos)self.__OpenQuestionDialog(FALSE, srcItemPos, dstItemPos)else:itemCount = player.GetItemCount(attachedInvenType, attachedSlotPos)attachedCount = mouseModule.mouseController.GetAttachedItemCount()self.__SendMoveItemPacket(attachedInvenType, attachedSlotPos, player.DRAGON_SOUL_INVENTORY, selectedSlotPos, attachedCount)mouseModule.mouseController.DeattachObject()def UseItemSlot(self, slotIndex):if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS():returnslotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(player.DRAGON_SOUL_INVENTORY, slotIndex)try:# ¿ëÈ¥¼® °*È*âÀÌ ¿*·ÁÀÖÀ¸¸é, ¾ÆÀÌÅÛ ¿ìŬ¸¯ ½Ã ÀÚµ¿À¸·Î °*È*âÀ¸·Î µé¾î°¨.if self.wndDragonSoulRefine.IsShow():if uiPrivateShopBuilder.IsBuildingPrivateShop():chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP)returnself.wndDragonSoulRefine.AutoSetItem((player.DRAGON_SOUL_INVENTORY, slotIndex), 1)returnexcept:passself.__UseItem(slotIndex)mouseModule.mouseController.DeattachObject()self.OverOutItem()def __SendMoveItemPacket(self, srcSlotWindow, srcSlotPos, dstSlotWindow, dstSlotPos, srcItemCount):if uiPrivateShopBuilder.IsBuildingPrivateShop():chat.AppendChat(chat.CHAT_TYPE_INFO, locale.MOVE_ITEM_FAILURE_PRIVATE_SHOP)returnnet.SendItemMovePacket(srcSlotWindow , srcSlotPos, dstSlotWindow, dstSlotPos, srcItemCount)# equip ½½·Ô °ü·Ã ÇÔ¼öµé.def OverOutEquipItem(self):self.OverOutItem()def OverInEquipItem(self, overSlotPos):overSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(player.INVENTORY, overSlotPos)self.wndItem.SetUsableItem(FALSE)self.ShowToolTip(player.INVENTORY, overSlotPos)def UseEquipItemSlot(self, slotIndex):if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS():returnslotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(player.INVENTORY, slotIndex)self.__UseEquipItem(slotIndex)mouseModule.mouseController.DeattachObject()self.OverOutEquipItem()def __UseEquipItem(self, slotIndex):if uiPrivateShopBuilder.IsBuildingPrivateShop():chat.AppendChat(chat.CHAT_TYPE_INFO, locale.USE_ITEM_FAILURE_PRIVATE_SHOP)returnself.__OpenQuestionDialog(FALSE, (player.INVENTORY, slotIndex), (1, 1))def SelectEquipItemSlot(self, itemSlotIndex):if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:returnitemSlotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(player.INVENTORY, itemSlotIndex)if mouseModule.mouseController.isAttached():attachedSlotType = mouseModule.mouseController.GetAttachedType()attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()# ÀÚ±â ÀÚ½ÅÀ» ÀÚ±â Àڽſ¡°Ô µå·¡±×ÇÏ´Â °æ¿ìif player.SLOT_TYPE_INVENTORY == attachedSlotType and itemSlotIndex == attachedSlotPos:returnattachedItemVID = mouseModule.mouseController.GetAttachedItemIndex()attachedInvenType = player.SlotTypeToInvenType(attachedSlotType)if player.RESERVED_WINDOW != attachedInvenType:net.SendItemUseToItemPacket(attachedInvenType, attachedSlotPos, player.INVENTORY, itemSlotIndex)mouseModule.mouseController.DeattachObject()else:selectedItemVNum = player.GetItemIndex(player.INVENTORY, itemSlotIndex)itemCount = player.GetItemCount(player.INVENTORY, itemSlotIndex)mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)self.wndItem.SetUseMode(FALSE)snd.PlaySound("sound/ui/pick.wav")def SelectEmptyEquipSlot(self, selectedSlot):if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:returnselectedSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(player.INVENTORY, selectedSlot)if mouseModule.mouseController.isAttached():attachedSlotType = mouseModule.mouseController.GetAttachedType()attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()if player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedSlotType:if 0 == player.GetItemMetinSocket(player.DRAGON_SOUL_INVENTORY, attachedSlotPos, 0):self.wndPopupDialog.SetText(locale.DRAGON_SOUL_EXPIRED)self.wndPopupDialog.Open()returnitem.SelectItem(attachedItemIndex)subType = item.GetItemSubType()if subType != (selectedSlot - player.DRAGON_SOUL_EQUIPMENT_SLOT_START):self.wndPopupDialog.SetText(locale.DRAGON_SOUL_UNMATCHED_SLOT)self.wndPopupDialog.Open()else:srcItemPos = (player.DRAGON_SOUL_INVENTORY, attachedSlotPos)dstItemPos = (player.INVENTORY, selectedSlotPos)self.__OpenQuestionDialog(TRUE, srcItemPos, dstItemPos)mouseModule.mouseController.DeattachObject()# equip ½½·Ô °ü·Ã ÇÔ¼öµé ³¡.# °æ°íâ °ü·Ãdef __OpenQuestionDialog(self, Equip, srcItemPos, dstItemPos):self.srcItemPos = srcItemPosself.dstItemPos = dstItemPosself.dlgQuestion.SetAcceptEvent(ui.__mem_func__(self.__Accept))self.dlgQuestion.SetCancelEvent(ui.__mem_func__(self.__Cancel))if Equip:self.dlgQuestion.SetText1(locale.DRAGON_SOUL_EQUIP_WARNING1)self.dlgQuestion.SetText2(locale.DRAGON_SOUL_EQUIP_WARNING2)else:self.dlgQuestion.SetText1(locale.DRAGON_SOUL_UNEQUIP_WARNING1)self.dlgQuestion.SetText2(locale.DRAGON_SOUL_UNEQUIP_WARNING2)self.dlgQuestion.Open()def __Accept(self):if (-1, -1) == self.dstItemPos:net.SendItemUsePacket(*srcItemPos)else:self.__SendMoveItemPacket(*(self.srcItemPos + self.dstItemPos + (0,)))self.dlgQuestion.Close()def __Cancel(self):self.srcItemPos = (0, 0)self.dstItemPos = (0, 0)self.dlgQuestion.Close()# °æ°íâ °ü·Ã ³¡def SetDSKindIndex(self, kindIndex):if self.DSKindIndex != kindIndex:self.__HighlightSlot_ClearCurrentPage()self.DSKindIndex = kindIndexfor (tabKey, tabButton) in self.tabButtonDict.items():if kindIndex!=tabKey:tabButton.SetUp()for tabValue in self.tabDict.itervalues():tabValue.Hide()self.tabDict[kindIndex].Show()self.tabText.SetText(DragonSoulWindow.KIND_TAP_TITLES[kindIndex])self.RefreshBagSlotWindow()def SetDeckPage(self, page):if page == self.deckPageIndex:returnif self.isActivated:self.DeactivateDragonSoul()net.SendChatPacket("/dragon_soul deactivate")self.deckPageIndex = pageself.deckTab .Down()self.deckTab[(page+1)%2].SetUp()self.RefreshEquipSlotWindow()# ¿ëÈ¥¼® È°¼ºÈ* °ü·Ãdef ActivateDragonSoulByExtern(self, deck):self.isActivated = TRUEself.activateButton.Down()self.deckPageIndex = deckself.deckTab[deck].Down()self.deckTab[(deck+1)%2].SetUp()self.RefreshEquipSlotWindow()def DeactivateDragonSoul(self):self.isActivated = FALSEself.activateButton.SetUp()def ActivateButtonClick(self):self.isActivated = self.isActivated ^ TRUEif self.isActivated:if self.__CanActivateDeck():net.SendChatPacket("/dragon_soul activate " + str(self.deckPageIndex))else:self.isActivated = FALSEself.activateButton.SetUp()else:net.SendChatPacket("/dragon_soul deactivate")def __CanActivateDeck(self):canActiveNum = 0for i in xrange(6):slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(player.INVENTORY, player.DRAGON_SOUL_EQUIPMENT_SLOT_START + i)itemVnum = player.GetItemIndex(slotNumber)if itemVnum != 0:item.SelectItem(itemVnum)isNoLimit = TRUEfor i in xrange(item.LIMIT_MAX_NUM):(limitType, limitValue) = item.GetLimit(i)# LIMIT_TIMER_BASED_ON_WEAR´Â ¼ÒÄÏ0¿¡ ³²Àº ½Ã°£À» ¹Ú´Â´Ù.# LIMIT_REAL_TIMEÀº ½Ã°£ ´Ù µÇ¸é ¾ÆÀÌÅÛÀÌ »ç¶óÁö¹Ç·Î ÇÒ ÇÊ¿ä°¡ ¾ø´Ù.# LIMIT_REAL_TIME_START_FIRST_USE´Â ¼*¹ö¿¡ Á¦´ë·Î Á¤ÀǵÇÁö ¾Ê¾Æ ÀÏ´Ü ³ÀµĞ´Ù.if item.LIMIT_TIMER_BASED_ON_WEAR == limitType:isNoLimit = FALSEremain_time = player.GetItemMetinSocket(player.INVENTORY, slotNumber, 0)if 0 != remain_time:canActiveNum += 1break# ŸÀ̸Ӱ¡ ¾ø´Ù¸é ActivateÇÒ ¼ö ÀÖ´Â ¿ëÈ¥¼®.if isNoLimit:canActiveNum += 1return canActiveNum &--#62; 0# È°¼ºÈ* °ü·Ã ³¡# ½½·Ô highlight °ü·Ãdef __HighlightSlot_ClearCurrentPage(self):for i in xrange(self.wndItem.GetSlotCount()):slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(player.DRAGON_SOUL_INVENTORY, i)if slotNumber in self.listHighlightedSlot:self.wndItem.DeactivateSlot(i)self.listHighlightedSlot.remove(slotNumber)def __HighlightSlot_RefreshCurrentPage(self):for i in xrange(self.wndItem.GetSlotCount()):slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(player.DRAGON_SOUL_INVENTORY, i)if slotNumber in self.listHighlightedSlot:self.wndItem.ActivateSlot(i)def HighlightSlot(self, slot):if not slot in self.listHighlightedSlot:self.listHighlightedSlot.append (slot)# ½½·Ô highlight °ü·Ã ³¡def SetDragonSoulRefineWindow(self, wndDragonSoulRefine):if app.ENABLE_DRAGON_SOUL_SYSTEM:from _weakref import proxyself.wndDragonSoulRefine = proxy(wndDragonSoulRefine)## °*È*ÇÒ ¼ö ¾ø´Â °æ¿ì ³¯¸®´Â ¿¹¿Ü#class DragonSoulRefineException(Exception):#passclass DragonSoulRefineWindow(ui.ScriptWindow):REFINE_TYPE_GRADE, REFINE_TYPE_STEP, REFINE_TYPE_STRENGTH = xrange(3)DS_SUB_HEADER_DIC = {REFINE_TYPE_GRADE : player.DS_SUB_HEADER_DO_UPGRADE,REFINE_TYPE_STEP : player.DS_SUB_HEADER_DO_IMPROVEMENT,REFINE_TYPE_STRENGTH : player.DS_SUB_HEADER_DO_REFINE}REFINE_STONE_SLOT, DRAGON_SOUL_SLOT = xrange(2)INVALID_DRAGON_SOUL_INFO = -1def __init__(self):ui.ScriptWindow.__init__(self)self.tooltipItem = Noneself.sellingSlotNumber = -1self.isLoaded = 0self.refineChoiceButtonDict = Noneself.doRefineButton = Noneself.wndMoney = Noneself.SetWindowName("DragonSoulRefineWindow")self.__LoadWindow()def __del__(self):ui.ScriptWindow.__del__(self)def Show(self):self.__LoadWindow()ui.ScriptWindow.Show(self)def __LoadWindow(self):if self.isLoaded == 1:returnself.isLoaded = 1try:pyScrLoader = ui.PythonScriptLoader()pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "dragonsoulrefinewindow.py")except:import exceptionexception.Abort("dragonsoulrefinewindow.LoadWindow.LoadObject")try:if locale.IsARABIC():self.board = self.GetChild("DragonSoulRefineWindowBaseImage")self.board.SetScale(-1.0, 1.0)self.board.SetRenderingRect(-1.0, 0.0, 1.0, 0.0)wndRefineSlot = self.GetChild("RefineSlot")wndResultSlot = self.GetChild("ResultSlot")self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))self.refineChoiceButtonDict = {self.REFINE_TYPE_GRADE : self.GetChild("GradeButton"),self.REFINE_TYPE_STEP: self.GetChild("StepButton"),self.REFINE_TYPE_STRENGTH : self.GetChild("StrengthButton"),}self.doRefineButton = self.GetChild("DoRefineButton")self.wndMoney = self.GetChild("Money_Slot")except:import exceptionexception.Abort("DragonSoulRefineWindow.LoadWindow.BindObject")## Item SlotswndRefineSlot.SetOverInItemEvent(ui.__mem_func__(self.__OverInRefineItem))wndRefineSlot.SetOverOutItemEvent(ui.__mem_func__(self.__OverOutItem))wndRefineSlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.__SelectRefineEmptySlot))wndRefineSlot.SetSelectItemSlotEvent(ui.__mem_func__(self.__SelectRefineItemSlot))wndRefineSlot.SetUseSlotEvent(ui.__mem_func__(self.__SelectRefineItemSlot))wndRefineSlot.SetUnselectItemSlotEvent(ui.__mem_func__(self.__SelectRefineItemSlot))wndResultSlot.SetOverInItemEvent(ui.__mem_func__(self.__OverInResultItem))wndResultSlot.SetOverOutItemEvent(ui.__mem_func__(self.__OverOutItem))self.wndRefineSlot = wndRefineSlotself.wndResultSlot = wndResultSlot## Buttonself.refineChoiceButtonDict[self.REFINE_TYPE_GRADE].SetToggleDownEvent(self.__ToggleDownGradeButton)self.refineChoiceButtonDict[self.REFINE_TYPE_STEP].SetToggleDownEvent(self.__ToggleDownStepButton)self.refineChoiceButtonDict[self.REFINE_TYPE_STRENGTH].SetToggleDownEvent(self.__ToggleDownStrengthButton)self.refineChoiceButtonDict[self.REFINE_TYPE_GRADE].SetToggleUpEvent(lambda : self.__ToggleUpButton(self.REFINE_TYPE_GRADE))self.refineChoiceButtonDict[self.REFINE_TYPE_STEP].SetToggleUpEvent(lambda : self.__ToggleUpButton(self.REFINE_TYPE_STEP))self.refineChoiceButtonDict[self.REFINE_TYPE_STRENGTH].SetToggleUpEvent(lambda : self.__ToggleUpButton(self.REFINE_TYPE_STRENGTH))self.doRefineButton.SetEvent(self.__PressDoRefineButton)## Dialogself.wndPopupDialog = uiCommon.PopupDialog()self.currentRefineType = self.REFINE_TYPE_GRADEself.refineItemInfo = {}self.resultItemInfo = {}self.currentRecipe = {}self.wndMoney.SetText(locale.NumberToMoneyString(0))self.refineChoiceButtonDict[self.REFINE_TYPE_GRADE].Down()self.__Initialize()def Destroy(self):self.ClearDictionary()self.tooltipItem = Noneself.wndItem = 0self.wndEquip = 0self.activateButton = 0self.questionDialog = Noneself.mallButton = Noneself.inventoryTab = []self.deckTab = []self.equipmentTab = []self.tabDict = Noneself.tabButtonDict = Nonedef Close(self):if None != self.tooltipItem:self.tooltipItem.HideToolTip()self.__FlushRefineItemSlot()player.SendDragonSoulRefine(player.DRAGON_SOUL_REFINE_CLOSE)self.Hide()def Show(self):self.currentRefineType = self.REFINE_TYPE_GRADEself.wndMoney.SetText(locale.NumberToMoneyString(0))self.refineChoiceButtonDict[self.REFINE_TYPE_GRADE].Down()self.refineChoiceButtonDict[self.REFINE_TYPE_STEP].SetUp()self.refineChoiceButtonDict[self.REFINE_TYPE_STRENGTH].SetUp()self.Refresh()ui.ScriptWindow.Show(self)def SetItemToolTip(self, tooltipItem):self.tooltipItem = tooltipItem# ¹öÆ° ´*·Á ÀÖ´Â »óŸ¦ Á¦¿ÜÇÑ ¸ğµç °*È*â °ü·Ã º¯¼öµéÀ» ÃʱâÈ*.def __Initialize(self):self.currentRecipe = {}self.refineItemInfo = {}self.resultItemInfo = {}if self.REFINE_TYPE_STRENGTH == self.currentRefineType:self.refineSlotLockStartIndex = 2else:self.refineSlotLockStartIndex = 1for i in xrange(self.refineSlotLockStartIndex):self.wndRefineSlot.HideSlotBaseImage(i)self.wndMoney.SetText(locale.NumberToMoneyString(0))def __FlushRefineItemSlot(self):## Item slot settings# ¿ø·¡ Àκ¥ÀÇ ¾ÆÀÌÅÛ Ä«¿îÆ® ȸº¹for invenType, invenPos, itemCount in self.refineItemInfo.values():remainCount = player.GetItemCount(invenType, invenPos)player.SetItemCount(invenType, invenPos, remainCount + itemCount)self.__Initialize()def __ToggleUpButton(self, idx):#if self.REFINE_TYPE_GRADE == self.currentRefineType:self.refineChoiceButtonDict[idx].Down()def __ToggleDownGradeButton(self):if self.REFINE_TYPE_GRADE == self.currentRefineType:returnself.refineChoiceButtonDict[self.currentRefineType].SetUp()self.currentRefineType = self.REFINE_TYPE_GRADEself.__FlushRefineItemSlot()self.Refresh()def __ToggleDownStepButton(self):if self.REFINE_TYPE_STEP == self.currentRefineType:returnself.refineChoiceButtonDict[self.currentRefineType].SetUp()self.currentRefineType = self.REFINE_TYPE_STEPself.__FlushRefineItemSlot()self.Refresh()def __ToggleDownStrengthButton(self):if self.REFINE_TYPE_STRENGTH == self.currentRefineType:returnself.refineChoiceButtonDict[self.currentRefineType].SetUp()self.currentRefineType = self.REFINE_TYPE_STRENGTHself.__FlushRefineItemSlot()self.Refresh()def __PopUp(self, message):self.wndPopupDialog.SetText(message)self.wndPopupDialog.Open()def __SetItem(self, (invenType, invenPos), dstSlotIndex, itemCount):if dstSlotIndex &--#62;= self.refineSlotLockStartIndex:return FALSEitemVnum = player.GetItemIndex(invenType, invenPos)maxCount = player.GetItemCount(invenType, invenPos)if itemCount &--#62; maxCount:raise Exception, ("Invalid attachedItemCount(%d). (base pos (%d, %d), base itemCount(%d))" % (itemCount, invenType, invenPos, maxCount))#return FALSE# strength °*È*ÀÏ °æ¿ì, 0¹ø¿£ °*È*¼®, 1¹ø¿£ ¿ëÈ¥¼®À» ³õµµ·Ï °*Á¦ÇÔ.if DragonSoulRefineWindow.REFINE_TYPE_STRENGTH == self.currentRefineType:if self.__IsDragonSoul(itemVnum):dstSlotIndex = 1else:dstSlotIndex = 0# ºó ½½·ÔÀ̾î¾ßÇÔ.if dstSlotIndex in self.refineItemInfo:return FALSE# °*È*â¿¡ ¿Ã¸± ¼ö ÀÖ´Â ¾ÆÀÌÅÛÀÎÁö °Ë»ç.if FALSE == self.__CheckCanRefine(itemVnum):return FALSE# ²ø¾î´Ù ³õÀº ¾ÆÀÌÅÛ Ä«¿îÆ®¸¸Å* ¿ø·¡ ÀÚ¸®ÀÇ ¾ÆÀÌÅÛ Ä«¿îÆ® °¨¼Òplayer.SetItemCount(invenType, invenPos, maxCount - itemCount)self.refineItemInfo[dstSlotIndex] = (invenType, invenPos, itemCount)self.Refresh()return TRUE# °*È* °¡´ÉÇÑ ¾ÆÀÌÅÛÀÎÁö üũ# ¿ëÈ¥¼® °*È*´Â °*È* ·¹½ÃÇǸ¦ Á¤Çسõ°í ½ÃÀÛÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó,# óÀ½¿¡ °*È*â¿¡ ¿Ã¸° ¿ëÈ¥¼®¿¡ ÀÇÇØ °*È* ·¹½ÃÇÇ°¡ °áÁ¤µÈ´Ù.# ±×·¡¼* __CanRefineGrade, __CanRefineStep, __CanRefineStrength ÇÔ¼ö¿¡¼*# °*È* ·¹½ÃÇÇ°¡ ¾ø´Ù¸é(óÀ½ ¿Ã¸®´Â ¾ÆÀÌÅÛÀ̶ó¸é), °*È* ·¹½ÃÇǸ¦ ¼³Á¤ÇØÁÖ´Â ¿ªÇÒµµ ÇÑ´Ù.def __CheckCanRefine(self, vnum):if self.REFINE_TYPE_GRADE == self.currentRefineType:return self.__CanRefineGrade(vnum)elif self.REFINE_TYPE_STEP == self.currentRefineType:return self.__CanRefineStep(vnum)elif self.REFINE_TYPE_STRENGTH == self.currentRefineType:return self.__CanRefineStrength(vnum)else:return FALSEreturn TRUEdef __CanRefineGrade (self, vnum):ds_info = self.__GetDragonSoulTypeInfo(vnum)if DragonSoulRefineWindow.INVALID_DRAGON_SOUL_INFO == ds_info:self.__PopUp(locale.DRAGON_SOUL_IS_NOT_DRAGON_SOUL)return FALSEif self.currentRecipe:ds_type, grade, step, strength = ds_infocur_refine_ds_type, cur_refine_grade, cur_refine_step, cur_refine_strength = self.currentRecipe["ds_info"]if not (cur_refine_ds_type == ds_type and cur_refine_grade == grade):self.__PopUp(locale.DRAGON_SOUL_INVALID_DRAGON_SOUL)return FALSE# °*È* â¿¡ óÀ½ ¾ÆÀÌÅÛÀ» ¿Ã¸®´Â °æ¿ì, °*È* Àç·á¿¡ °üÇÑ Á¤º¸°¡ ¾ø´Ù.# ¿ëÈ¥¼® °*È*°¡, ·¹½ÃÇǸ¦ °¡Áö°í ½ÃÀÛÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, °*È*â¿¡ óÀ½ ¿Ã¸®´Â ¾ÆÀÌÅÛÀÌ ¹«¾ùÀ̳Ŀ¡ µû¶ó,# ¹«¾ùÀ» °*È*ÇÏ°í, Àç·á°¡ ¹«¾ùÀÎÁö(ÀÌÇÏ ·¹½ÃÇÇ)°¡ Á¤ÇØÁø´Ù.# ·¹½ÃÇÇ°¡ ¾ø´Ù¸é, óÀ½ ¿Ã¸° ¾ÆÀÌÅÛÀ̶ó »ı°¢ÇÏ°í, vnumÀ» ¹ÙÅÁÀ¸·Î ·¹½ÃÇǸ¦ ¼ÂÆÃ.else:self.currentRecipe = self.__GetRefineGradeRecipe(vnum)if self.currentRecipe:self.refineSlotLockStartIndex = self.currentRecipe["need_count"]self.wndMoney.SetText(locale.NumberToMoneyString(self.currentRecipe["fee"]))return TRUEelse:# °*È* Á¤º¸ ¼ÂÆÿ¡ ½ÇÆĞÇÏ¸é ¿Ã¸± ¼ö ¾ø´Â ¾ÆÀÌÅÛÀ¸·Î ÆÇ´Ü.self.__PopUp(locale.DRAGON_SOUL_CANNOT_REFINE)return FALSEdef __CanRefineStep (self, vnum):ds_info = self.__GetDragonSoulTypeInfo(vnum)if DragonSoulRefineWindow.INVALID_DRAGON_SOUL_INFO == ds_info:self.__PopUp(locale.DRAGON_SOUL_IS_NOT_DRAGON_SOUL)return FALSEif self.currentRecipe:ds_type, grade, step, strength = ds_infocur_refine_ds_type, cur_refine_grade, cur_refine_step, cur_refine_strength = self.currentRecipe["ds_info"]if not (cur_refine_ds_type == ds_type and cur_refine_grade == grade and cur_refine_step == step):self.__PopUp(locale.DRAGON_SOUL_INVALID_DRAGON_SOUL)return FALSE# °*È* â¿¡ óÀ½ ¾ÆÀÌÅÛÀ» ¿Ã¸®´Â °æ¿ì, Àç·á¿¡ °üÇÑ Á¤º¸°¡ ¾ø´Ù.# ¿ëÈ¥¼® °*È*°¡, ·¹½ÃÇǸ¦ °¡Áö°í ½ÃÀÛÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, °*È*â¿¡ óÀ½ ¿Ã¸®´Â ¾ÆÀÌÅÛÀÌ ¹«¾ùÀ̳Ŀ¡ µû¶ó,# ¹«¾ùÀ» °*È*ÇÏ°í, Àç·á°¡ ¹«¾ùÀÎÁö(ÀÌÇÏ ·¹½ÃÇÇ)°¡ Á¤ÇØÁø´Ù.# ·¹½ÃÇÇ°¡ ¾ø´Ù¸é, óÀ½ ¿Ã¸° ¾ÆÀÌÅÛÀ̶ó »ı°¢ÇÏ°í, vnumÀ» ¹ÙÅÁÀ¸·Î ·¹½ÃÇǸ¦ ¼ÂÆÃ.else:self.currentRecipe = self.__GetRefineStepRecipe(vnum)if self.currentRecipe:self.refineSlotLockStartIndex = self.currentRecipe["need_count"]self.wndMoney.SetText(locale.NumberToMoneyString(self.currentRecipe["fee"]))return TRUEelse:# °*È* Á¤º¸ ¼ÂÆÿ¡ ½ÇÆĞÇÏ¸é ¿Ã¸± ¼ö ¾ø´Â ¾ÆÀÌÅÛÀ¸·Î ÆÇ´Ü.self.__PopUp(locale.DRAGON_SOUL_CANNOT_REFINE)return FALSEdef __CanRefineStrength (self, vnum):# ¿ëÈ¥¼®ÀÎ °æ¿ì, ´õ ÀÌ»ó strength °*È*¸¦ ÇÒ ¼ö ¾ø´ÂÁö üũÇؾßÇÔ.if self.__IsDragonSoul(vnum):ds_type, grade, step, strength = self.__GetDragonSoulTypeInfo(vnum)import dragon_soul_refine_settingsif strength &--#62;= dragon_soul_refine_settings.dragon_soul_refine_info[ds_type]["strength_max_table"][grade][step]:self.__PopUp(locale.DRAGON_SOUL_CANNOT_REFINE_MORE)return FALSEelse:return TRUE# strength °*È*ÀÇ °æ¿ì, refine_recipe°¡ ¿ëÈ¥¼®ÀÇ Á¾·ù°¡ ¾Æ´Ñ, °*È*¼®ÀÇ Á¾·ù¿¡ µû¶ó ´Ş¶óÁø´Ù.# µû¶ó¼* ¿ëÈ¥¼®ÀÌ ¾Æ´Ï¶ó¸é,# ÀÌ¹Ì ·¹½ÃÇÇ°¡ ÀÖ´Â °æ¿ì´Â, °*È*¼®ÀÌ °*È*â¿¡ ÀÖ´Ù´Â °ÍÀ̹ǷÎ, return FALSE# ·¹½ÃÇÇ°¡ ¾ø´Â °æ¿ì´Â, °*È*¼®ÀÎÁö È®ÀÎÇÏ°í, ·¹½ÃÇǸ¦ ¼ÂÆÃÇÑ´Ù.else:if self.currentRecipe:self.__PopUp(locale.DRAGON_SOUL_IS_NOT_DRAGON_SOUL)return FALSEelse:refineRecipe = self.__GetRefineStrengthInfo(vnum)if refineRecipe:self.currentRecipe = refineRecipeself.wndMoney.SetText(locale.NumberToMoneyString(self.currentRecipe["fee"]))return TRUEelse:# ·¹½ÃÇǸ¦ ¼ÂÆÃÇÒ ¼ö ¾ø´Â °æ¿ìself.__PopUp(locale.DRAGON_SOUL_NOT_DRAGON_SOUL_REFINE_STONE)return FALSEdef __GetRefineGradeRecipe (self, vnum):ds_type, grade, step, strength = self.__GetDragonSoulTypeInfo(vnum)try:import dragon_soul_refine_settingsreturn {"ds_info" : (ds_type, grade, step, strength),"need_count" : dragon_soul_refine_settings.dragon_soul_refine_info[ds_type]["grade_need_count"][grade],"fee" : dragon_soul_refine_settings.dragon_soul_refine_info[ds_type]["grade_fee"][grade]}except:return Nonedef __GetRefineStepRecipe (self, vnum):ds_type, grade, step, strength = self.__GetDragonSoulTypeInfo(vnum)try:import dragon_soul_refine_settingsreturn {"ds_info" : (ds_type, grade, step, strength),"need_count" : dragon_soul_refine_settings.dragon_soul_refine_info[ds_type]["step_need_count"][step],"fee" : dragon_soul_refine_settings.dragon_soul_refine_info[ds_type]["step_fee"][step]}except:return None# strength °*È*ÀÇ °æ¿ì, refineInfo´Â °*È*¼®¿¡ µû¶ó ´Ş¶óÁø´Ù.def __GetRefineStrengthInfo (self, itemVnum):try:# À̳ğÀÇ À§Ä¡¸¦ ¾îÂîÇÏÁö....# °*È*¼®ÀÌ ¾Æ´Ï¸é ¾ÈµÊ.item.SelectItem(itemVnum)if not (item.ITEM_TYPE_MATERIAL == item.GetItemType()and (item.MATERIAL_DS_REFINE_NORMAL &--#60;= item.GetItemSubType() and item.GetItemSubType() &--#60;= item.MATERIAL_DS_REFINE_HOLLY)):return Noneimport dragon_soul_refine_settingsreturn { "fee" : dragon_soul_refine_settings.strength_fee[item.GetItemSubType()] }except:return Nonedef __IsDragonSoul(self, vnum):item.SelectItem(vnum)return item.GetItemType() == item.ITEM_TYPE_DS# ¿ëÈ¥¼® Vnum¿¡ ´ëÇÑ comment# ITEM VNUMÀ» 10¸¸ ÀÚ¸®ºÎÅÍ, FEDCBA¶ó°í ÇÑ´Ù¸é# FE : ¿ëÈ¥¼® Á¾·ù. D : µî±Ş# C : ´Ü°è B : °*È*# A : ¿©¹úÀÇ ¹øÈ£µé...def __GetDragonSoulTypeInfo(self, vnum):if not self.__IsDragonSoul(vnum):return DragonSoulRefineWindow.INVALID_DRAGON_SOUL_INFOds_type = vnum / 10000grade = vnum % 10000 /1000step = vnum % 1000 / 100strength = vnum % 100 / 10return (ds_type, grade, step, strength)def __MakeDragonSoulVnum(self, ds_type, grade, step, strength):return ds_type * 10000 + grade * 1000 + step * 100 + strength * 10## ºó ½½·Ô ¼±Åà Eventdef __SelectRefineEmptySlot(self, selectedSlotPos):try:if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:returnif selectedSlotPos &--#62;= self.refineSlotLockStartIndex:returnif mouseModule.mouseController.isAttached():attachedSlotType = mouseModule.mouseController.GetAttachedType()attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()mouseModule.mouseController.DeattachObject()if uiPrivateShopBuilder.IsBuildingPrivateShop():chat.AppendChat(chat.CHAT_TYPE_INFO, locale.MOVE_ITEM_FAILURE_PRIVATE_SHOP)returnattachedInvenType = player.SlotTypeToInvenType(attachedSlotType)if player.INVENTORY == attachedInvenType and player.IsEquipmentSlot(attachedSlotPos):returnif player.INVENTORY != attachedInvenType and player.DRAGON_SOUL_INVENTORY != attachedInvenType:returnif TRUE == self.__SetItem((attachedInvenType, attachedSlotPos), selectedSlotPos, attachedItemCount):self.Refresh()except Exception, e:import dbgdbg.TraceError("Exception : __SelectRefineEmptySlot, %s" % e)# Ŭ¸¯À¸·Î ½½·Ô¿¡¼* »èÁ¦.def __SelectRefineItemSlot(self, selectedSlotPos):if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:returntry:if not selectedSlotPos in self.refineItemInfo:# »õ·Î¿î ¾ÆÀÌÅÛÀ» °*È*â¿¡ ¿Ã¸®´Â ÀÛ¾÷.if mouseModule.mouseController.isAttached():attachedSlotType = mouseModule.mouseController.GetAttachedType()attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()mouseModule.mouseController.DeattachObject()if uiPrivateShopBuilder.IsBuildingPrivateShop():chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP)returnattachedInvenType = player.SlotTypeToInvenType(attachedSlotType)if player.INVENTORY == attachedInvenType and player.IsEquipmentSlot(attachedSlotPos):returnif player.INVENTORY != attachedInvenType and player.DRAGON_SOUL_INVENTORY != attachedInvenType:returnself.AutoSetItem((attachedInvenType, attachedSlotPos), 1)returnelif mouseModule.mouseController.isAttached():returnattachedInvenType, attachedSlotPos, attachedItemCount = self.refineItemInfo[selectedSlotPos]selectedItemVnum = player.GetItemIndex(attachedInvenType, attachedSlotPos)# °*È*â¿¡¼* »èÁ¦ ¹× ¿ø·¡ Àκ¥ÀÇ ¾ÆÀÌÅÛ Ä«¿îÆ® ȸº¹invenType, invenPos, itemCount = self.refineItemInfo[selectedSlotPos]remainCount = player.GetItemCount(invenType, invenPos)player.SetItemCount(invenType, invenPos, remainCount + itemCount)del self.refineItemInfo[selectedSlotPos]# °*È*âÀÌ ºñ¾ú´Ù¸é, ÃʱâÈ*if not self.refineItemInfo:self.__Initialize()else:item.SelectItem(selectedItemVnum)# ¾ø¾Ø ¾ÆÀÌÅÛÀÌ °*È*¼®À̾ú´Ù¸é °*È* ·¹Çǽà ÃʱâÈ*if (item.ITEM_TYPE_MATERIAL == item.GetItemType()and (item.MATERIAL_DS_REFINE_NORMAL &--#60;= item.GetItemSubType() and item.GetItemSubType() &--#60;= item.MATERIAL_DS_REFINE_HOLLY)):self.currentRecipe = {}self.wndMoney.SetText(localeInfo.NumberToMoneyString(0))# ¿ëÈ¥¼®À̾ú´Ù¸é,# strength°*È*°¡ ¾Æ´Ñ °æ¿ì, °*È*â¿¡ ´Ù¸¥ ¿ëÈ¥¼®ÀÌ ³²¾ÆÀÖÀ¸¹Ç·Î, ·¹½ÃÇǸ¦ ÃʱâÈ*ÇÏ¸é ¾ÈµÊ.# strength°*È*ÀÇ °æ¿ì, °*È* ·¹½ÃÇÇ´Â °*È*¼®¿¡ Á¾¼ÓµÈ °ÍÀ̹ǷΠ´Ù¸¥ ó¸®ÇÒ ÇÊ¿ä°¡ ¾øÀ½.else:passexcept Exception, e:import dbgdbg.TraceError("Exception : __SelectRefineItemSlot, %s" % e)self.Refresh()def __OverInRefineItem(self, slotIndex):if self.refineItemInfo.has_key(slotIndex):inven_type, inven_pos, item_count = self.refineItemInfo[slotIndex]self.tooltipItem.SetInventoryItem(inven_pos, inven_type)def __OverInResultItem(self, slotIndex):if self.resultItemInfo.has_key(slotIndex):inven_type, inven_pos, item_count = self.resultItemInfo[slotIndex]self.tooltipItem.SetInventoryItem(inven_pos, inven_type)def __OverOutItem(self):if self.tooltipItem:self.tooltipItem.HideToolTip()def __PressDoRefineButton(self):for i in xrange(self.refineSlotLockStartIndex):if not i in self.refineItemInfo:self.wndPopupDialog.SetText(locale.DRAGON_SOUL_NOT_ENOUGH_MATERIAL)self.wndPopupDialog.Open()returnplayer.SendDragonSoulRefine(DragonSoulRefineWindow.DS_SUB_HEADER_DIC[self.currentRefineType], self.refineItemInfo)def OnPressEscapeKey(self):self.Close()return TRUEdef Refresh(self):self.__RefreshRefineItemSlot()self.__ClearResultItemSlot()def __RefreshRefineItemSlot(self):try:for slotPos in xrange(self.wndRefineSlot.GetSlotCount()):self.wndRefineSlot.ClearSlot(slotPos)if slotPos &--#60; self.refineSlotLockStartIndex:# self.refineItemInfo[slotPos]ÀÇ Á¤º¸È®ÀÎ# (½ÇÁ¦·Î ¾ÆÀÌÅÛÀÌ Á¸ÀçÇÏ´ÂÁö È®ÀÎ)# Á¸Àç -&--#62; ¾ÆÀÌÅÛ ¾ÆÀÌÄÜÀ» ½½·Ô¿¡ ¼ÂÆÃ.# ºñÁ¸Àç -&--#62; ¾ÆÀÌÅÛÀÌ ¾øÀ¸¹Ç·Î °*È*â¿¡¼* »èÁ¦.if slotPos in self.refineItemInfo:invenType, invenPos, itemCount = self.refineItemInfo[slotPos]itemVnum = player.GetItemIndex(invenType, invenPos)# if itemVnum:if itemVnum:self.wndRefineSlot.SetItemSlot(slotPos, player.GetItemIndex(invenType, invenPos), itemCount)else:del self.refineItemInfo[slotPos]# ºó ½½·Ô¿¡ reference ¾ÆÀÌÄÜÀ» alpha 0.5·Î ¼ÂÆÃ.if not slotPos in self.refineItemInfo:try:reference_vnum = 0# strength °*È*ÀÏ ¶§´Â,# 0¹ø ½½·Ô¿¡ °*È*¼®À», 1¹ø ½½·Ô¿¡ ¿ëÈ¥¼®À» ³õ´Â´Ù.if DragonSoulRefineWindow.REFINE_TYPE_STRENGTH == self.currentRefineType:if DragonSoulRefineWindow.REFINE_STONE_SLOT == slotPos:reference_vnum = 100300else:reference_vnum = self.__MakeDragonSoulVnum(*self.currentRecipe["ds_info"])if 0 != reference_vnum:item.SelectItem(reference_vnum)itemIcon = item.GetIconImage()(width, height) = item.GetItemSize()self.wndRefineSlot.SetSlot(slotPos, 0, width, height, itemIcon, (1.0, 1.0, 1.0, 0.5))# slot ¿ìÃø ÇÏ´Ü¿¡ ¼ıÀÚ ¶ß¸é ¾È ¿¹»İ...self.wndRefineSlot.SetSlotCount(slotPos, 0)except:pass# refineSlotLockStartIndex º¸´Ù ÀÛÀº ½½·ÔÀº ´İÈù À̹ÌÁö¸¦ º¸¿©ÁÖ¸é ¾ÈµÊ.self.wndRefineSlot.HideSlotBaseImage(slotPos)# slotPos &--#62;= self.refineSlotLockStartIndex:else:# Á¤»óÀûÀÎ °æ¿ì¶ó¸é ÀÌ if¹®¿¡ µé¾î°¥ ÀÏÀº ¾ø°ÚÁö¸¸,# (¾ÖÃÊ¿¡ À妽º°¡ refineSlotLockStartIndex ÀÌ»óÀÎ ½½·Ô¿¡´Â ¾ÆÀÌÅÛÀ» ³ÖÁö ¸øÇÏ°Ô Ç߱⠶§¹®)# Ȥ½Ã ¸ğ¸¦ ¿¡·¯¿¡ ´ëºñÇÔ.if slotPos in self.refineItemInfo:invenType, invenPos, itemCount = self.refineItemInfo[slotPos]remainCount = player.GetItemCount(invenType, invenPos)player.SetItemCount(invenType, invenPos, remainCount + itemCount)del self.refineItemInfo[selectedSlotPos]# refineSlotLockStartIndex ÀÌ»óÀÎ ½½·ÔÀº ´İÈù À̹ÌÁö¸¦ º¸¿©Áà¾ßÇÔ.self.wndRefineSlot.ShowSlotBaseImage(slotPos)# °*È*â¿¡ ¾Æ¹«·± ¾ÆÀÌÅÛÀÌ ¾ø´Ù¸é, ÃʱâÈ*ÇØÁÜ.# À§¿¡¼* Áß°£ Áß°£¿¡ "del self.refineItemInfo[slotPos]"¸¦ Ç߱⠶§¹®¿¡,# ¿©±â¼* Çѹø üũÇØÁà¾ßÇÔ.if not self.refineItemInfo:self.__Initialize()self.wndRefineSlot.RefreshSlot()except Exception, e:import dbgdbg.TraceError("Exception : __RefreshRefineItemSlot, %s" % e)def __GetEmptySlot(self, itemVnum = 0):# STRENGTH °*È*ÀÇ °æ¿ì, ¿ëÈ¥¼® ½½·Ô°ú °*È*¼® ½½·ÔÀÌ ±¸ºĞµÇ¾îÀֱ⠋š¹®¿¡# vnumÀ» ¾Ë¾Æ¾ß ÇÑ´Ù.if DragonSoulRefineWindow.REFINE_TYPE_STRENGTH == self.currentRefineType:if 0 == itemVnum:return -1if self.__IsDragonSoul(itemVnum):if not DragonSoulRefineWindow.DRAGON_SOUL_SLOT in self.refineItemInfo:return DragonSoulRefineWindow.DRAGON_SOUL_SLOTelse:if not DragonSoulRefineWindow.REFINE_STONE_SLOT in self.refineItemInfo:return DragonSoulRefineWindow.REFINE_STONE_SLOTelse:for slotPos in xrange(self.wndRefineSlot.GetSlotCount()):if not slotPos in self.refineItemInfo:return slotPosreturn -1def AutoSetItem(self, (invenType, invenPos), itemCount):itemVnum = player.GetItemIndex(invenType, invenPos)emptySlot = self.__GetEmptySlot(itemVnum)if -1 == emptySlot:returnself.__SetItem((invenType, invenPos), emptySlot, itemCount)def __ClearResultItemSlot(self):self.wndResultSlot.ClearSlot(0)self.resultItemInfo = {}def RefineSucceed(self, inven_type, inven_pos):self.__Initialize()self.Refresh()itemCount = player.GetItemCount(inven_type, inven_pos)if itemCount &--#62; 0:self.resultItemInfo[0] = (inven_type, inven_pos, itemCount)self.wndResultSlot.SetItemSlot(0, player.GetItemIndex(inven_type, inven_pos), itemCount)def RefineFail(self, reason, inven_type, inven_pos):if net.DS_SUB_HEADER_REFINE_ [img]http://cyber-gamers.org/public/style_emoticons/<#EMO_DIR#>/55158.gif[/img]http://cyber-gamers.org/public/style_emoticons/<#EMO_DIR#>/55158.gif[/img] == reason:self.__Initialize()self.Refresh()itemCount = player.GetItemCount(inven_type, inven_pos)if itemCount &--#62; 0:self.resultItemInfo[0] = (inven_type, inven_pos, itemCount)self.wndResultSlot.SetItemSlot(0, player.GetItemIndex(inven_type, inven_pos), itemCount)else:self.Refresh()def SetInventoryWindows(self, wndInventory, wndDragonSoul):self.wndInventory = wndInventoryself.wndDragonSoul = wndDragonSoul Adicionar game.py
    ## Inventory Suche

    Add Game.py

    # END_OF_CUBE

    Add Game.py
    onPressKeyDict[app.DIK_I] = lambda : self.interface.ToggleInventoryWindow() e adicioná-lo

    onPressKeyDict[app.DIK_O] = lambda : self.interface.ToggleDragonSoulWindowWithNoInfo() Add Game.py
    # UNKNOWN_UPDATE
    def BINARY_NEW_AddAffect(self, type, pointIdx, value, duration): self.affectShower.BINARY_NEW_AddAffect(type, pointIdx, value, duration) if chr.NEW_AFFECT_DRAGON_SOUL_DECK1 == type or chr.NEW_AFFECT_DRAGON_SOUL_DECK2 == type: self.interface.DragonSoulActivate(type - chr.NEW_AFFECT_DRAGON_SOUL_DECK1) elif chr.NEW_AFFECT_DRAGON_SOUL_QUALIFIED == type: self.BINARY_DragonSoulGiveQuilification() def BINARY_NEW_RemoveAffect(self, type, pointIdx): self.affectShower.BINARY_NEW_RemoveAffect(type, pointIdx) if chr.NEW_AFFECT_DRAGON_SOUL_DECK1 == type or chr.NEW_AFFECT_DRAGON_SOUL_DECK2 == type: self.interface.DragonSoulDeactivate()
    Fonte : EPVP
    Cumprimentos,
  20. Upvote
    kikoocunha got a reaction from Unk3n0w7 in Problema Com Transmutação   
    Para a refinação ser correcta, não é aí, mas sim na item_proto . vais à item proto , vais à linha da aço (11299) e procuras a coluna que diz refine_vnum ou qlqr cena assim e nessa linha escreves 12019 (aço azul)
  21. Upvote
    kikoocunha reacted to Thomas l Web Designe in [Release]Elysiamt2 V1, Cms, Pt-Pt.   
    Boas Cyber-Gamers!


    Hoje, venho-vos postar, o melhor(segundo a epvp), website de metin2 actualmente desenvolvido.

    O Website, foi desenvolvido em 2012, pela Shock-Industries.

    Com autorização do Lars(Dono da Shock), deu-me acesso ao site completamente desencriptado(mas isso não vos posso dar).

    O que o website contém?:


    - Área Administrativa;
    - Área de Moderação;
    - Área de Jogador;

    Funções?

    Configuração do site (Painel Admin):

    - Menu principal (URL da página, o título da página, a linguagem, rates, etc);
    - Welcome Page: Página Inicial(configuração);
    - Configurações do Registo(Activo/desactivo, confirmação por email, mds ao registar, etc);
    - Configurações de Mensagens(Activar/Desactivar, Maximo na caixa de entrada, etc);
    - Vote Reward System (Mds em troca de votos(automatico));
    - Chmod (autmaticamente reconheçe se o website está bem configurado no servidor);
    - Modo de Manutenção (Activar / Desactivar incluindo ingame(automatico));

    Plugins (Painel Admin):

    - Activar/Desactivar;
    - Instalar Novos plugins(Disponiveis no site oficial da Shock(fim do post));

    Estado do Servidor (Painel Admin):

    - Configurações(ips, portas, channels, escolher o que mostrar(nº de players, guilds, contas) ou players online);

    Configurações do Fórum (Painel Admin):

    - Categorias, foruns, permissões, etc;

    Loja de Itens (Painel Admin):

    - Lista de Itens;
    - Adicionar itens;
    - Adicionar Categorias;

    Navegação (Painel Admin):

    - Adicionar/Remover Parcelas dos menus do jogador e do painel admin;

    Módulos (Painel Admin):

    - Adicionar Módulos;
    - Ativar / desativar;
    - Mover (Centro, Direita, Esquerda);

    Membros & Equipa (Painel Admin):

    - Editar Membros;
    - Adicionar GM/Mods/Admins;
    - Editar Equipa: Forum/Site & Ingame;

    PaySafeCard Payments (Painel Admin):

    - Visualizar Pagamentos por PSC;
    - Aceitar / Recusar Pagamentos;
    - Configurar Recompensas por PSC;

    Painel do Jogador (Membros):

    - Alterar Nome(Site/Forum);
    - Desbugar Personagem;
    - Caixa de Correiro(Caixa de Entrada, Saída, e Arquivo);
    - Perfil (skype, msn, facebook, email, etc);
    - Avisos (Avisos da Equipa);
    - Assinatura do Forum;
    - Avatar do site;

    Log (Memrbos):

    - Visualizar o log completo da conta (Moedas Dragão, Alteração de Pw/email, Nome do forum/personagem, etc);

    Ranking (Guild/Players):

    - Top10 (laterais);
    - Ranking completo com Visualização do Inventários do Jogador(pode ser desactivado nas configurações de conta);

    E muito mais! Estas São apenas algumas das funções básicas do site!

    Downloads:

    - Shock-industries CMS: Link

    - Pack Linguagem PT-PT by Thomas | Web Designer: Link

    - ElysiaMT2 v1 Design by Thomas | Web Designer: Link

    - Plugins & Módulos: Link

    Intruções:

    - Como instalar o CMS? Ir a Dominio.com/install
    - Como instalar Plugins? Descarregam a pasta do plugin, e poem-no na pasta "plugins" do site;
    - Como instalar Módulos? Descarregam a pasta do modulo, e poem-no na pasta "modules" do site;

    Créditos:

    - Lars Streifthau (Desenvolvedor da Shock CMS);
    - Thomas | Web Designer - Tradução & Desenvolvimento do Design(A partir do PSD do Aziz Natour);

    Boa Sorte! Qualquer Coisa Skype ou msn!

  22. Upvote
    kikoocunha reacted to 'PACI in Anel De Teleporte   
    Não critiquem por já cá existir, simplesmente não tinha nada para fazer.
    Limitei-me a escrever a quest da maneira mais pequena possível e que soubesse >.>

    quest teleport begin state start begin when 70007.use begin local item = "Anel de Teleporte" local pergunta = "Onde queres ir?" local gogo = "Vais ser teleportado." local coordenadas = { {969600, 278400}, {873100, 242600}, {469300, 964200}, {360800, 877600}, {55700, 157900}, {138500, 234900} } say_title(item) say(pergunta) local a = select ("Cidade 1 Azuis", "Cidade 2 Azuis", "Cidade 1 Vermelhos", "Cidade 2 Vermelhos", "Cidade 1 Amarelos", "Cidade 2 Amarelos", "Sair") if a != 7 then say_title(item) say(gogo) wait() pc.warp(coordenadas[a][1], coordenadas[a][2]) end end end end
  23. Upvote
    kikoocunha reacted to SINOLOGY in Tradução Versão 1.0.2 - 2013Er Files [Novo 0.2]   
    http://cyber-gamers.org/public/style_emoticons/default/451960.gif http://cyber-gamers.org/public/style_emoticons/default/451960.gifhttp://cyber-gamers.org/public/style_emoticons/default/451960.gif http://cyber-gamers.org/public/style_emoticons/default/451960.gif
    TRADUÇÃO VERSÃO 1.0.2 - 2013er FILES
    Download:

    https://mega.co.nz/#...nFi8Pd1fM_-0vRs

    Scan: https://www.virustot...sis/1370222041/

    Senha:
    puriecyber


    Esta é a Versão 1.0.2 de BOSS.

    Esta tradução está diponível apenas para o fórum PURI e CYBER-GAMERS.


    É recomendado LER os arquivos Ler.txt das traduções.
  24. Upvote
    kikoocunha reacted to SINOLOGY in Tradução Versão 1.0.1 - 2013Er Files   
    Esta tradução V 1.0.1 será a única versão permitida aqui na Cyber-Gamers

    As outras versões só estarão disponíveis na Studgi.

    Download da tradução Versão 1.0.1:
    https://mega.co.nz/#...ANc9hW_Emh2eQKE

    Scan:
    https://www.virustotal.com/pt/file/bd755bcb72ef05af2d4c1960c7bf761c6b478f5b1e3edf6419b1e5a9e5ae7c6b/analysis/1370101728/


    Senha para descompactar:
    studgi.webuda.com

    A tradução contém:

    SERVERSIDE:

    locale.lua 100% Traduzido
    locale_string 100% Traduzido
    31 ficheiros quests Traduzidos


    CLIENTSIDE:
    Contém tudo em PT-PT exceto o nome dos itens.


    BREVEMENTE VERSÃO 1.0.2 na Studgi


    Cumprimentos;
    BOSS.
  25. Upvote
    kikoocunha reacted to 'PACI in Traduzir Proto Automaticamente   
    Não vou andar com grande introdução.
    Não querem converter o item_proto do pt para .sql e substituirem o vosso?
    Não querem traduzir à mão?
    Então... vamos lá.