Jump to content

Senos

Global Moderators
  • Content Count

    183
  • Joined

  • Last visited

  • Days Won

    8

Everything posted by Senos

  1. Cool the episode, updates, skills, mobs and maps, fine details, thanks!
  2. Link wrong. The same is correct: http://mysterious-project.googlecode.com/svn/trunk/Renders/Card%20Images.zip Very good, I downloaded all! @Edit: The same thing: NPC CUTINS e JRO CUTINS.
  3. Senos

    2 suggestions

    I agree, no more!
  4. Congratz, interesting and cool, reput!
  5. Script Intermediário! - 7 Lista de Aulas: Aula 1: http://herc.ws/board/topic/199-script-intermedi%C3%A1rio-aula-1/ Aula 2: http://herc.ws/board/topic/200-script-intermedi%C3%A1rio-aula-2/ Aula 3: http://herc.ws/board/topic/201-script-intermedi%C3%A1rio-aula-3/ Aula 4: http://herc.ws/board/topic/203-script-intermedi%C3%A1rio-aula-4/ Aula 5: http://herc.ws/board/topic/213-script-intermedi%C3%A1rio-aula-5/ Aula 6: http://herc.ws/board/topic/228-queries-sql-aula-6/ Aula 7: http://herc.ws/board/topic/239-script-intermedi%C3%A1rio-aula-7/ Bom, nesta aula ensinarei a utilizar as operações matemáticas, comparações, e condições (Baseado na linguagem C). Segue abaixo os tópicos que ensinaremos: 1.0 Operador de igualdade 2.0 Operadores aritméticos 3.0 Operadores lógicos 4.0 Operadores condicionais 1.0 Operador de igualdade É um operador super comum em todas as linguagens de programação, esse operador (=) faz a variável da esquerda assumir o valor da variável da direita, ou expressão (caso for string), porém, no script nós NÃO utilizamos esse tipo de operador, e fazemos uma soma direto, utilizando a vírgula, vide o exemplo: set @var, @var + 2; // O conteúdo de @var é aumentado em 2! Simples, não? O operador de igualdade em C ficaria assim: var = var + 2; // O conteúdo de var é aumentado em 2! 2.0 Operadores aritméticos Bom, são os operadores mais usados simplesmente na linguagem de script, tabela: Exemplo com variável: set @variavel, 2;if (@variavel >= 3) { // Isso aqui nunca aparecerá pois @variavel que é igual a 2, nunca será // maior ou igual a 3, logo essa parte aqui se torna falsa, e pulará o if. mes "Essa condição é falsa!"; close;}mes "A condição acima é falsa!";close; Outros exemplos agora sem variável: if (2 >= 3) { mes "Isso nunca aparecerá (pois não é verdadeiro) porque 3 não é maior ou igual que 2."; close;} mes "O valor é falso!";close; Agora vai da sua lógica saber utilizar os comandos da maneira como quiser e como necessitar em seu script! 3.0 Operadores lógicos As vezes são usados normalmente com expressões booleanas (acho que o Dubugras explicou isso uma vez no Cronus), isto é, expressões que retornam verdadeiro ou falso (1 ou 0 por exemplo), para fins de testes em declarações condições. && (E lógico) Retorna verdadeiro se todos os operadores forem verdadeiros e falsos nos demais casos, por exemplo: if (1 < 2 && 2 > 1); // 1 é menor que 2, e 2 é maior que 1. || (OU lógico) Retorna verdadeiro se todos os operadores forem verdadeiros e falsos nos demais casos, por exemplo: if (1 < 2 || 2 > 1); // 1 é menor que 2, ou 2 é maior que 1. ! (NÃO lógico) Retorna verdadeiro se ele é falso e vice-versa, por exemplo: set @variavel, 1;if (!@variavel); // A variável NÃO é igual a 1. Em C, se fizemos só isso bastaria: if (!var); // Ou até mesmo:if (var == 0); // Daria no mesmo! 4.0 Operadores condicionais Temos uma forma genérica, por exemplo. <variável>, (expressao 1) ? (expressao 2) : (expressao 3); Em if poderiamos fazer simplesmente: if (var == 0) { set varx, 2;} else { set varx = 3;} Agora poderiamos otimizar da seguinte maneira: if ((var == 0) ? 2 : 3)); Com certeza depois de almejar mais scripts, de fazer modificações ou até mesmo elaborar seus própios scripts, verão que são coisas extremamente simples de entender e até mesmo praticar! _____________________________________________________________ Fim do tutorial, criado por Wolf!
  6. Script/DB Developer and Global Moderator in Brazilian Projects! (brAthena & Cronus)

  7. Hi, hehe! o_õ

    1. Senos

      Senos

      Nothing to do, sorry, uhauha! :P

    2. Relzz

      Relzz

      Log: Angra Manyu Equiped

      Log: Ahura Mazdah Equiped

      @allstats 9999999999999

       

      M45T3R used Hyper-Beam on both!! ~

    3. Senos

      Senos

      auhauhauh, crazy man! :o

    4. Show next comments  12 more
  8. Reallly a very good idea, and: This for me is the best part, innovation for Hercules, ambitions for the project grow is really cool. Onward!!!
  9. Can you optimize these functions, also remove these labels. I had removed the labels for you, just that it seems that you have not seen the script. Only tips!
  10. Yes yes, I find it interesting, do not you think?
  11. So okay, is more a matter of habit even this type of structure. Area not think useless, because i like a lot of help in this area. But ok, thanks! What about: ?
  12. Well, hauhauha, here I am again. I find it interesting that has the name of the groups of staff in footer of the forum, because it is easier to manupulate who enters and leaves the theam and see who is really in a faster way. And also adding the Area of Requests and "Database" in support areas. • Area of Requests: requests for scripts, database, source, etc ... • Database: all requests that are resolved are moved to this area, only after passing if someone ask the same thing. I hope I was clear, thank you!
  13. See who accepted the suggestion, thanks!
  14. Huahuahua, truth!! All were trollssss
  15. Senos

    Queries SQL (Aula 6)

    Script Intermediário! - 6 Lista de Aulas: Aula 1: http://herc.ws/board/topic/199-script-intermedi%C3%A1rio-aula-1/ Aula 2: http://herc.ws/board/topic/200-script-intermedi%C3%A1rio-aula-2/ Aula 3: http://herc.ws/board/topic/201-script-intermedi%C3%A1rio-aula-3/ Aula 4: http://herc.ws/board/topic/203-script-intermedi%C3%A1rio-aula-4/ Aula 5: http://herc.ws/board/topic/213-script-intermedi%C3%A1rio-aula-5/ Aula 6: http://herc.ws/board/topic/228-queries-sql-aula-6/ Aula 7: http://herc.ws/board/topic/239-script-intermedi%C3%A1rio-aula-7/ Bom galera, depois de aprendermos loops, arrays, menus dinâmicos e suas teorias, setd e getd, attachrid e detachrid, partiremos então para o Banco de Dados e aprenderemos então a maniuplar as Queries SQL, que é de suma importância para quem gosta de seus scripts mais seguros e com suas respectivas tabelas. Assunto da aula: - Queries SQL Como de costume, começarei mostrando a sintaxe do comando, e em cima dela, trabalharemos: query_sql "sua query de MySQL", <variável> {,<variável>, ...}; Sua Query_SQL: Você colocará a query que você quer executar, você aprenderá neste tutorial como escrever sua query da maneira que quer. Variável: Nem sempre é preciso específicar a variável, depende do comando que você utilizará. Você quando for atualizar (update) ou deletar (delete) algo de seu Banco de Dados ou sua respectiva tabela, você não precisará utilizar, agora caso for pegar alguma informação (select), você precisará sim da variável, lembrando que ser for texto ou palavars, precisará da var. string ($) caso contrário for números, não precisará. Bom, então começaremos a explicar os comandos, comando SELECT: SELECT <informacão> FROM <tabela> informacão: Como podemos perceber no Banco de Dados, uma tabela é formada por vários campos, neste campo, você indica o nome do campo que você deseja ler. Você pode específicar vários campos para serem lidos, exemplo: SELECT <informacão>,<informação>,<informação> FROM <tabela> Mas lembrando que teremos que específicar uma variável para cada campo no final da escrita da Querie, você pode substituir o nome dos campos por um (*), assim retornará todos os campos da tabela, sem precisar específicar um por um. tabela: Nome da tabela dentro do Banco de Dados que você gostaria de pegar a informação. Agora vejamos um exemplo utilizando o comando SQL em uma sintaxe Querie: query_sql ("SELECT `user_id` FROM `login`",@nome_do_usuario$); No caso essa variável @nome_do_usuario$ se tornará uma array, pois não será apenas 1 valor, e sim vários valores pois serão retornados todos os nomes de usuários de jogadores do seu servidor. No caso ficará assim: @nome_do_usuario$[0]: Usuario 1@nome_do_usuario$[1]: Usuario 2// Ficará sempre assim, só mudando a index da array, [2], [3], [4], etc... Aproveitarei com o comando SELECT, para explicar o comando WHERE, iremos pegar o nome de usuário de um jogador com o ID 1 no Banco de Dados, faremos assim no caso: query_sql ("SELECT `user_id` FROM `login` WHERE `account_id`=1",@nome_do_usuario$); Assim buscaremos uma conta específica e não todas as contas do jogo, simples, não?! Temos um conjunto de dois comandos chamados AND e OR, é utilizado junto com o WHERE, vejamos: query_sql ("SELECT `user_id` FROM `login` WHERE `level`=99 AND `sex`='M'",@nome_do_usuario$); Nesse caso só pegariamos o nome dos usuários dos jogadores que forem level 99 e (AND) do Sexo Masculino. Exemplo com o comando OR: query_sql ("SELECT `user_id` FROM `login` WHERE `level`=99 OR `sex`='F'",@nome_do_usuario$); Agora só pegariamos o nome dos usuários dos jogadores que forem level 99 ou (OR) do Sexo Feminino. Os dois comandos são super simples! Temos também o comando ASC (Ascendente) e DESC (Descendente), vejamos: query_sql ("SELECT `user_id` FROM `login` ASC"); // Retornaria a lista de nomes de usuários do servidor em ordem alfabética de A para o Z.query_sql ("SELECT `user_id` FROM `login` DESC"); // Retornaria a lista de nomes de usuários do servidor em ordem alfabética de Z para o A. Comando INSERT INTO: Este comando é para que você possa criar uma nova linha de dados dentro de uma tabela, criando uma nova informação na sua tabela desejada, vejamos: INSERT INTO <tabela> (<campos>) VALUES (<valores>); Vejamos um exemplo: query_sql ("INSERT INTO `login` (`account_id`, `user_id`, `user_pass`, `sex`, `email`) VALUES ('2000000', 'test', '12345', 'M','[email protected]')"); Nesta caso, estamos criando uma conta com o account_id 2000000, o nome de usuário test, a senha 12345, sexo masculino, e e-mail [email protected]. Partiremos então pro comando UPDATE, sintaxe: UPDATE `<tabela>` SET `<campo1>`='<valor1>',`<campo2>`='<valor2>'; Não é um comando complicado, com o exemplo passará de complexo para super simples, vejamos: query_sql ("UPDATE `login` SET `level`=99 WHERE `user_id`='Wolf'"); Esta queria irá mudar o Nível de GM da conta Wolf para 99, preste atenção, pois caso você não específicasse com o comando WHERE, todas as contas do servidor poderiam ser mudadas para 99, causando um transtorno enorme. Comando DELETE: Simplesmente faz oque diz, deleta uma informação da tabela, sintaxe: DELETE FROM `<tabela>` Se fizermos simplesmente DELETE FROM `login`, todas as informações da tabela login seriam deletadas, por isso iremos específicar, por exemplo: query_sql ("DELETE FROM `login` WHERE `userid`='Wolf'"); Neste caso a conta Wolf será deletada da tabela login do Banco de Dados. Porém não é recomendável deletar a conta desta maneira, pois as informações de chars, itens, e pets ainda ficariam ocupando espaços no Banco de Dados, no caso você teria que deletar tudo manualmente, porém serviu de exemplo. Comando DROP: Deleta a tabela inteira, sintaxe: DROP TABLE `<tabela>` Exemplo: query_sql ("DROP TABLE `login`"); Destrói a tabela login, ninguém mais consegue logar no servidor, e poderá arrecadar muitos problemas. Existe DROP DATABASE também, no caso você deletará uma Database, se você fizer DROP DATABASE `ragnarok`, acabará com o Banco de Dados ragnarok ò_ó. _____________________________________________________________ Fim do tutorial, posteriormente irei editar esse tópico e adicionar uns exemplos utilizando Querie, mas talvez, pois adicionei diversos exemplos no tutorial. Abraços!!
  16. Broken link: http://pastebin.com/kedhbBeM
  17. Obrigado Julio, se tiver ideias para outras aulas, diga-me para que eu possa elaborar!
  18. Remove it for Players ? For forum members, I say. There is not anything ragnarok, is the forum!
  19. Remove option Show 'Edit by' line in any board. But because Wolf? - For administrators and moderators have control of members' posts. In case of disputes, discussions, prevent members to edit their posts, not that it will happen, but if it happens. I think only creators of topics in the areas of tutorials should have this option, to edit/update/modify your tutorials.
  20. Script Intermediário! - 5 Lista de Aulas: Aula 1: http://herc.ws/board/topic/199-script-intermedi%C3%A1rio-aula-1/ Aula 2: http://herc.ws/board/topic/200-script-intermedi%C3%A1rio-aula-2/ Aula 3: http://herc.ws/board/topic/201-script-intermedi%C3%A1rio-aula-3/ Aula 4: http://herc.ws/board/topic/203-script-intermedi%C3%A1rio-aula-4/ Aula 5: http://herc.ws/board/topic/213-script-intermedi%C3%A1rio-aula-5/ Aula 6: http://herc.ws/board/topic/228-queries-sql-aula-6/ Aula 7: http://herc.ws/board/topic/239-script-intermedi%C3%A1rio-aula-7/ Bom, nesta aula estarei ensinando sobre o comando attachrid e detachrid, são comandos mais complexos, porém entendíveis para aqueles que tem atenção na aula e uma boa noção já de script, que já manipulam suas lógicas para fazer da maneira que acha melhor e correto. Irei iniciar então o assunto da aula, e nela criar exemplos, explicações, e explicar a sintaxe do comando. Primeiro assunto da aula: - Attachrid Sintaxe do comando:attachrid(<ID Da Conta>); A função básica desta sintaxe é anexar o RID do jogador ao NPC (script), ou seja, você pode forçar o jogador a executar as funções do npc. Vejamos um exemplo: - script Olá -1,{ OnOla: attachrid(2000001); mes "Olá"; mes "Você foi forçado a ver o olá do script! ^~"; close;} Agora caso aplicarmos desta forma, teremos um problema. O jogador pode estar offline, então poderá gerar aquele erro no map-server "Player not attached (Jogador não atachado, não encontrado)". Para resolvermos esse problema, teremos que fazer uma verificação, veja: - script Olá -1,{ OnOla: if (!attachrid(getcharid(3,"Nick_do_Jogador")) { // O jogador está offline, logo já evitaremos o erro // do player not attached. end; } //Caso o jogador esteja online: mes "Olá"; mes "Você foi forçado a ver o olá do script! ^~"; close;} O comando attachrid retorna 0 se o jogador estiver offline e 1 para online. Pegamos no snippet feito, o account_id do jogador pelo nome/nick dele. Esse comando é de grande utilidade pois podemos criar sistemas com tempos, no qual podemos anexar o jogador ao tempo com seu limite. Podemos criar loops em função do attachrid para anúncios, verificar se o jogador está online não, tudo isso ligado a apenas um jogador (o jogador anexado). Pegar o nome de quem matou ou morreu, aplicar um comando neste unico jogador, etc... Alguns exemplos com attachrid: 1. Primeiro exemplo: OnPCDieEvent: set .BaseLevel, BaseLevel; attachrid(killedrid); // Verifica todos os jogadores que matou o outro [Killerdrid = variável pronta para jogadores que matam]. set .exp, (100*.BaseLevel/BaseLevel); // No caso isso dará um bônus baseado no BaseLevel do cara multiplicado 100x. getexp .exp, .exp;end; Dará experiência a um jogador que matou o outro. 2. Segundo exemplo: mes "Gostaria de participar do evento?"; if (select("Sim:Não")==2) close; next; set $@rids_salvos[.i], getcharid(3); set .i, .i +1; warp "",0,0; end; Isso salvará o rid do jogador no script, para que possa utilizar posteriormente, caso queira limpar o rid salvo, só fazer: OnPcLogouEvent: set $@rids_salvos[.i], 0;end; Bom, aí no caso quando o jogador deslogar a variável $@rids_salvos será zerada, e não terá mais valor. Mas aí vai de acordo como você quiser, eu coloquei para quando o jogador deslogar, você bota opcionalmente como você quiser, foi apenas um exemplo. Segundo assunto: - Detachrid Detachrid faz o contrário do attachrid, esse dexanexa o jogador do script. Então comandos para jogadores que necessitam de attachs, não passam mais a funcionar. Como forçar o jogador a falar com o script, ou por exemplo você atachar ele ao script, e no final desanexá-lo, você terá que anexá-lo denovo para usar funções que anexam ele ao script, caso queira criar funções dos exemplos que eu fiz. Não tenho muito oque dizer sobre este comando, é básicamente isso, e sintaxe dele é simplesmente: detachrid; Bom, é simplesmente isso, um abraço! Wolf.
  21. Interesting idea, but it could for maps gvg/pvp could be optional, know? Example: // 0 or false to disable, 1 or true to enableenable_maps_pvps: 0 enable_maps_gvgs: 1 Just an example and suggestion.
  22. Not seen the post? http://herc.ws/board/topic/204-helppremium-system/?p=1212 ps: You can even change: mes "[^FF0000Clahador^000000]"; To: mes "[^FF0000"+strnpcinfo(1)+"^000000]"; Good script, congratz!
  23. Organized, "optimized" and removed the labels, if you want to use: prontera,155,181,5 script Clahador 757,{ function getPremiumTime; mes "[^FF0000Clahador^000000]"; mes "Hello "+strcharinfo(0)+", I'm ^FF0000Clahador the butcher^000000."; mes "I will be of help if you need something."; next; mes "[^FF0000Clahador^000000]"; mes "Oh! you need help?"; mes "What kind of help do you need?"; next; switch (select("Newbie here:I'm a ViP!:Nevermind")) { case 1: mes "[^FF0000Clahador^000000]"; mes "Did you already claim your free items in the ^FF0000Freebies NPC^000000???"; if (select("Sim:Não")==2) { mes "[^FF0000Clahador^000000]"; mes "You should get 'em!."; mes "It will help you on the start."; mes "I will send you to the freebie giver."; next; warp "prontera",155,183; } else { mes "[^FF0000Clahador^000000]"; mes "Haha, i hope you like those items."; next; mes "By the way, you can earn zennies through quests like going to daily quest, request board, and many more!"; mes "Did you know that you can have many zennies you want if you gonna hunt more rare items?"; mes "Try it!"; } break; case 2: mes "[^FF0000Clahador^000000]"; mes "Oh you avail our ViP Ticket!"; mes "Thank you!"; next; mes "[^FF0000Clahador^000000]"; mes "Your ^0055FFPremium Time^000000 Left : "+getPremiumTime( #Premium ); mes "You should maximize it"; mes "Grind your skills and hunt now!"; break; case 3: mes "[^FF0000Clahador^000000]"; mes "Thank you!"; mes "Come Again!"; break; } close;}
  24. Your first? Unbelievable, very beautiful and a different structure, maybe because I'm used to websites Brazilians, but it was really cool. Ps: My first was a failure.
  25. Logo logo irei reformular o tópico das mesmas, não gosto dessas coisas tão coloridas assim, é porque a 1 e a 2 foram as primeiras que fiz, já a 3 e a 4 já fiz direto aqui no Hercules e ficaram mais organizadas, pois gosto desse tipo de code que contém no rA/brA e aqui, já no Cronus não tem, então preferi fazer com imagens. Muito obrigado, e caso queira redistribuir no brAthena ou algo do tipo, fica a dispor! Reformulei os tópicos já, deixei mais limpos, retirei as corzinhas que me incomodavam, acho que agora está melhor!!
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.