Okuz

Membro
  • Total de itens

    93
  • Registro em

  • Última visita

Reputação

46 Sábio

Sobre Okuz

  • Rank
    Membro Iniciante
  • Data de Nascimento 23-02-1991

Profile Information

  • Sexo
    Masculino
  • Cidade / UF
    Brasil
  • Interesses
    Official Behaviors

Contact Methods

  • Skype
    lucas.oliveira853

Últimos Visitantes

3.332 visualizações
  1. Olá l4nd, Seu erro é simples, independente da quantidade de loots que o jogador vai retirar da caixa (@aleatoriodrop), você já definiu o item que ele irá receber (@aleatorioitens) antes do laço começar a iteração, pois a variável foi definida FORA DO LAÇO! Dessa forma, a cada iteração do for-loop você continuará com o mesmo item escolhido primeiramente. Além disso, .@i não é um vetor e você não encontrará valor algum (na verdade quando não tem valor algum pra inteiro, assume-se 0 como valor padrão) ao utilizar a seguinte sintaxe: .@i[@aleatorioitens] Você está tentando acessar um índice de uma variável que nem vetor é, percebe o erro? O correto seria você mover a declaração da variável @aleatorioitens pra dentro do bloco do for-loop e, além disso, você também deverá trocar a sintaxe apontada acima para a seguinte sintaxe: for(set .@i, 0; .@i < @aleatoriodrop; set .@i, .@i + 1) { set @aleatorioitens, rand(getarraysize(.itens)); getitem .itens[@aleatorioitens], .qntitens[@aleatorioitens]; } Se você não sabe a diferença entre uma variável e um vetor eu recomendo a leitura deste arquivo: https://github.com/Cronus-Emulator/Cronus/blob/master/doc/Comandos_de_Script_PT-BR.txt Segue também a minha versão do seu script, com a alteração do escopo de algumas variáveis: prontera,150,150,5 script teste132 900,{ // Configurações OnInit: setarray .itens[0], 607, 608, 609, 610, 611; // Id de cada item setarray .qntitens[0], 1, 2, 3, 4, 5; // Quantidade de cada item set .qntdropmin, 1; // Defina quantos itens pode dropar no minimo da caixa set .qntdropmax, 4; // Defina quantos itens pode cair no maximos da caixa end; set .@aleatoriodrop, rand(.qntdropmin, .qntdropmax); // Randomiza a quantidade de itens que pode ser recebido pela caixa for (set .@i, 0; .@i < .@aleatoriodrop; set .@i, .@i + 1) { set .@j, rand(getarraysize(.itens)); getitem .itens[.@j], .qntitens[.@j]; } } Att, _Okuz_.
  2. Olá Skanke, Não testei, fiz aqui rapidão... se você encontrar algum problema estou à disposição. prontera,150,150,5 script Gerente de Clãs#guild_up 4_M_DWARF,{ mes "[Gerente de Clãs]"; if (!getcharid(2)) { mes "Para utilizar os meus serviços você precisa estar em um clã."; } else if (getguildmasterid(getarg(2)) != getcharid(0)) { mes "Para utilizar os meus serviços você precisa ser o líder do clã."; } else if (countitem(.cmgr_item_id) < .cmgr_item_amount) { mes "Você não possui a quantidade necessária de " + .cmgr_item_amount + "x - " + getitemname(.cmgr_item_id) + " para aumentar o nível do seu clã."; } else { query_sql "SELECT `guild_lv` FROM `guild` WHERE `guild_id` = " + getcharid(2), .@guild_lv; if (.@guild_lv >= .cmgr_max_lv) { mes "Não tenho permissão para aumentar o nível de Clãs que estejam acima do nível " + .cmgr_max_lv + "."; } else { delitem .cmgr_item_id, .cmgr_item_amount; atcommand "@glvl +" + (.cmgr_max_lv - .@guild_lv); mes "O nível do seu clã foi alterado com sucesso!"; } } close; OnInit: set .cmgr_max_lv, 12; set .cmgr_item_id, 671; set .cmgr_item_amount, 5000; } Att, _Okuz_.
  3. Olá ADM Nerix, Pense o seguinte, em ragnarok quase tudo é formula, correto? Dessa forma, não seria diferente com habilidades e dano físico. Algumas particularidades das habilidades como tempo de conjuração, propriedade etc podem ser alterados nos arquivos de prefixo Skill_*, presentes na pasta db/Skill_DB/. Se você quer alterar as fórmulas literalmente, você terá que editar as habilidades diretamente nos arquivos do código fonte do emulador, e isso requer um conhecimento intermediário / avançado em linguagem C. Em todo caso, se você já possuir tais conhecimentos em linguagem C, aconselho que você dê uma lida neste guia sobre como adicionar uma nova habilidade: https://github.com/rathena/rathena/wiki/Adding_new_skills Seguindo a mesma linha de raciocínio para adicionar uma nova habilidade você também será capaz de editar as habilidades já presentes no jogo, basta entender o procedimento. Att, _Okuz_.
  4. Depende, você fez 300/150 renewal ou pre-renewal, pois as formulas de dano são diferentes acredito eu. Outro ponto, você aumentou os atributos? Se você aumentou, você fez o cálculo pra saber quanto o jogador vai receber de pontos de atributo do 99 ao 300? É com esses pontos que você vai subir algum atributo até o máximo (ou até onde você achar necessário) pra poder obter um dano elevado de acordo com a fórmula da habilidade que você está utilizando, ou até mesmo o ataque físico. Neste tópico eu explico um pouco sobre este assunto: Att, _Okuz_.
  5. Este erro ocorre porque algum comando de script tentou utilizar um mapa que não está presente no map_index / cache. Infelizmente não sei te dizer em que momento que o erro ocorre, mas certifique-se de que você tem todos os mapas, que o script precisa para ser executado, implementados em seu emulador. Sobre outras questões do jogo, não vou me prontificar porque este é um script bem antigo. A lógica presente nele (do meu ponto de vista) não está boa, acho que na época que o script foi feito não existiam comandos e formas melhores de se fazer isso, porém, hoje em dia há. Para os demais problemas eu recomendo que você estude o básico / intermediário de scripting pois você mesmo será capaz de saná-los. Isso é o máximo que eu posso fazer, desculpe. Att, _Okuz_.
  6. Olá shirazpanro, Sua dúvida foi meio vaga, o que exatamente você quer ajustar? Se você estiver se referindo às fórmulas, você deverá alterá-las direto no código fonte do emulador e isso requer algum conhecimento prévio em programação (C), para que você possa compreender, alterar e recompilar o projeto. Att, _Okuz_.
  7. Olá Dream Catcher, Eu não analisei a fundo a lógica do script, mas vou te ajudar identificar e corrigir alguns erros. O comando getmapxy está esperando como primeiro argumento uma variável do tipo string. Neste caso, a variável passada é do tipo int. Correção: getmapxy(getd(".m$"+strnpcinfo(3)+"$"),getd(".x"+strnpcinfo(3)),getd(".y"+strnpcinfo(3)),1); Um erro interessante, se você reparar bem no script não existem laços (do, while, for), então me perguntei como poderia haver um loop infnito ali. A resposta? Acredito que os gotos, mas não tenho certeza... teste a correção segue abaixo: Correção: L_invincible: freeloop(1); // O jogador é invencível,(que se movem aleatoriamente) getmapxy(.@maplocation$,.@Xlocation,.@Ylocation,1); set .@Xlocation2,rand(5); set .@Ylocation2,rand(5); set .@Xlocation,.@Xlocation+.@Xlocation2; set .@Ylocation,.@Ylocation+.@Ylocation2; if (checkcell(.@maplocation$,.@Xlocation,.@Ylocation,cell_walkable)) goto L_invincible; freeloop(0); npcwalkto .@Xlocation,.@Ylocation; initnpctimer; end; Por último, seguem diversas mensagens de erro se referindo ao mesmo tipo de erro, eventos não encontrados. Não sei ao certo se os eventos deveriam ou não existir, como disse anteriormente não analisei a fundo o script. Portanto, segue a minha sugestão: Correções: case 1: case 2: case 3: donpcevent "::OnPacPoringEnable"; break; donpcevent "#pacporingbonus1"+.@k$+"::OnEnablePacBonus"; donpcevent "#pacporingbonus2"+.@k$+"::OnEnablePacBonus"; donpcevent "#pacporingbonus3"+.@k$+"::OnEnablePacBonus"; Isso é o máximo que eu posso fazer, espero ter ajudado de alguma forma. Att, _Okuz_.
  8. Olá Ferreira, Este script só tem um pequeno probleminha na linha 2, falta um ponto e vírgula ; nela depois da última aspas ". Mude isso: .npc$ = "[Lhz]" // Nome do npc. Para isso: .npc$ = "[Lhz]"; // Nome do npc. Att, _Okuz_.
  9. HAHAHA! Com certeza que sim! Eu não utilizaria em meu servidor de maneira alguma, mas eu quis mostrar que era possível. OnPCAttackMobEvent é um evento que deve ser usado com cautela e, pessoalmente, eu optaria por uma edição na source se necessitasse muito de algo desse tipo. Att, _Okuz_.
  10. Também testei aqui e funcionou perfeitamente, não obtive nenhum erro. Talvez você não tenha adicionado a função aos seus scripts. Siga o mesmo procedimento que você faz para adicionar um npc custom (personalizado), pois a função "é uma espécie de NPC". Att, _Okuz_.
  11. Sendo assim você pode resolver de 2 formas: Colocando diretamente no script do item (acho que fica muito poluído, não recomendo.) Criando uma função que adiciona X quantidade de Cash ao seu gosto (recomendo, e muito!) Segunda solução (recomendada): PS: Adicione a função seguindo o mesmo procedimento de adicionar um NPC. // Description: Adds Arg(0) cash to the account. // Arg(0): Cash amount // Return: Void function script F_addCash { #CASHPOINTS += getarg(0); announce "Você acabou de receber " + getarg(0) + " pontos de Cash.",bc_self; sleep 13000; announce "Você tem um total de " + #CASHPOINTS + " pontos de Cash.",bc_self; return; } E no script do item você substitui isso: Script: <" #CASHPOINTS += 5000; "> Por isso: Script: <" callfunc "F_addCash",5000; "> Att, _Okuz_
  12. Se possível, poste uma imagem da sua console do map-server para checarmos se há algum erro na execução do script após a execução do click.
  13. Olá ADM Nerix, A maneira como o cash é gerenciado pelo emulador (via variável de conta) não invoca nenhum evento que informe a quantidade de cash que foi adicionado à conta do jogador. Porém, se você tiver experiência o suficiente, você pode tranquilamente editar a fonte do emulador para criar o evento e então utiliza-lo ao seu bel prazer. Por outro lado, se você quer apenas informar ao jogador que ele recebeu X de cash, no ato em que o Administrador/GM adicionar o cash na conta dele via algum outro NPC / sistema que você tenha ai, basta você adicionar (no NPC / sistema que você tenha ai), estas linhas de código. announce "Você acabou de receber " + <variável_qtd_cash> + " pontos de Cash.",bc_self; sleep 12500; announce "Você tem um total de " + #CASHPOINTS + " pontos de Cash.",bc_self; Se você tiver o gerenciador de CASH que você está utilizando, poste-o para que eu possa adequar as mensagens. Att, _Okuz_.
  14. Que bom! Se possível, abra uma issue lá no github para informar aos desenvolvedores que o emulador está apresentando este problema. Os desenvolvedores farão a análise e/ou correção do problema e outras pessoas poderão se beneficiar também. Att, _Okuz_.
  15. Olá ADM Nerix, Já faz algum tempo que não mexo com db, mas vou tentar te ajudar ok? Dei uma olhada lá no repositório do emulador e notei que houve uma mudança na estrutura das pastas de database, por isso talvez eu não possa te auxiliar com muita exatidão tendo em vista que estou mais familiarizado com a estrutura antiga do eA / rA. Vamos fazer uns testes? Copie as skills e coloque-as diretamente no arquivo principal, isto é, se você usa PRE-RE (Mob_Skill_PRE.txt) e se você usa RE (Mob_Skill_RE.txt). Se elas funcionarem, então há algum problema com configuração ou leitura do arquivo personalizado. Att, _Okuz_.