Jump to content

Mooka

Members
  • Posts

    21
  • Joined

  • Last visited

Everything posted by Mooka

  1. It's not "end". This is part of the system and cause problems if removed. The "end" must be added after the last sound always . If you give me a screenshot or error name, and, your DATA.INI or data/wav screenshot, i can help you better.
  2. http://pastebin.com/PYZCnpei OnPCKillEvent: if((gettimetick(0) - getd("@LastTTick_"+killedrid) < (3*60*1000)) end; else setd "@LastTTick_" + killedrid, gettimetick(0); callfunc("pvpm_func","PCKillEvent");
  3. hmm... i don't recommend, but.. here is @552,1 Find: OnPCKillEvent: callfunc("pvpm_func","PCKillEvent"); Replace with: OnPCKillEvent: if((gettimetick(0) - lastKillTimeTick) < (3*60*1000)) end; else set lastKillTimeTick, gettimetick(0); callfunc("pvpm_func","PCKillEvent");
  4. So, this maybe work: OnPCKillEvent: if((gettimetick(0) - lastKillTimeTick) < (3*60*1000)) end; else set lastKillTimeTick, gettimetick(0); set PvP_Points, PvP_Points + 1; [...]
  5. I'll implement this in future versions. I had mind about this problem and i thought some solutions, maybe i don't make your suggestion but i'll fix with others methods. Obs: This an international section, write english.
  6. Not true, you can choice one, two, three or any amount of language to install (if you translate the language table to others languages). The script must have installed 1 language only to work.
  7. Change the following lines below: @28,2 - if(gettimetick(2) - lastTimeTalked > (60 * 60 * 24)) { + if((gettimetick(2) - ##lastTimeTalked) > (60 * 60 * 24)) @44,4 - set lastTimeTalked, gettimetick(2); + set ##lastTimeTalked, gettimetick(2); ##var it's a account variable. Download the edited script here: http://pastebin.com/7VNru6ZS
  8. 1. Absolutely, it's a bad sounds instalation. Try install again. 2. Combowhore, Whicked Sick and Rampage were not added in the script, but you can add editing the sound list. (it's not problem cause) -- i don't remeber the order of sounds, just a example: set $@SoundList$[1],"First Blood"; // | set $@SoundList$[2],"Double Kill"; // | set $@SoundList$[3],"Triple Kill"; // | set $@SoundList$[5],"Mega Kill"; // | set $@SoundList$[10],"Ultra Kill"; // | set $@SoundList$[15],"Killing Spree"; // | set $@SoundList$[20],"Ownage"; // | set $@SoundList$[25],"Holy Shit"; // | set $@SoundList$[30],"God Like"; // | set $@SoundList$[35],"Combowhore"; // added set $@SoundList$[40],"Whicked Sick"; // added set $@SoundList$[45],"Rampage"; //added set $@SoundList$[50],"Dominating"; // | set $@SoundList$[55],"Unstoppable"; // | set $@SoundList$[60],"Monster Kill"; // | set $@SoundList$[61],"end"; // necessary after the last sound.
  9. Yes, but there is a better way: prontera,155,151,5 script Testing Online Player 954,{ mes "Party Online Players: "+callfunc("getPartyOnlinePlayers", getcharid(1)); close; } -- Sorry for miss ')'
  10. Error? Check if wave files is in data/wav or in your GRF. If the problem is't the files, show me a screenshot.
  11. Yes, it's possible. http://pastebin.com/TfCsDcNR /* getPartyOnlinePlayers(party_id); */ function script getPartyOnlinePlayers { set @counter, 0; getpartymember(getarg(0)); for(set @i, 0; @i <= $@partymembercount; set @i, @i+1) { if(isloggedin(getcharid(3,$@partymembername$[@i]), getcharid(0,$@partymembername$[@i]))) set @counter, @counter + 1; } return @counter; } Example: set @onlinememberscount, callfunc("getPartyOnlinePlayers", getcharid(1)); # Sorry for the error, fixed
  12. I have a very very old CTF script was i made, but it's in portuguese. i don't know if have bugs. However, if you are interested, download and test. I will translate to english and post it soon, but would like implement battleground system in the script before.
  13. Even you already have fixed the problem, you must check if value exist in table to avoid a column clone, and also check the return of input. Replace your T_Add label to this: T_Add: do { set @r_input, input(.@aid,2000000,2005000); } while (@r_input != 0); // check if the input value is in the range if(!query_sql("SELECT account_id FROM `login` WHERE account_id ="+.@aid,.@qaid)) goto T_Fail; if(attachrid(.@qaid)) { set ##owner,1; } else { if(!.@qaid) //prevent two or more insertion in table query_sql "INSERT INTO `global_reg_value` (`char_id`, `str`, `value`, `type`, `account_id`) VALUES ('0','##owner','1','1','"+.@qaid+"')"; else query_sql("UPDATE `global_reg_value` SET `value` = 1 WHERE `str`='##owner' AND `account_id`='"+.@qaid+"'"); } end;
  14. Two points, 1. Check if the table have more than 1 result for the condition. You didn't check if value already exist to use the UPDATE command. This is necessary. 2. Maybe, the variable is being overridden when the map-server execute your "Save routine". This occours when player is online and you use a query to alter values in global_reg_value. Try use attachrid to set variable when player is online, this should fix your problem.
  15. Nice, i don't have much time but i will try a Staff application.
  16. Mooka

    Lol nice avatar guy

    1. GreenBox

      GreenBox

      Where is the like button? :(

    2. Renz
  17. Battlefield 3 w/ BTK (Origin/PC) [Origin ID: lMooka] Diablo 3 [Mooka#1163] Minecraft
  18. Sorry guys, i´m not active in rathena or any emulator community more. Really, it's a event i take a time to reply my topics. This line do not fix the problem correctly, to fix this problem execute these query below: update pvpm_lang set lang=lang-1; update pvpm_lang set lang=2 where lang=-1; This will set English to deafult (0) and Portuguese to ID 2 (negatives numbers can't be ready by the script) This system can be made independent of the pvp master, just query pvpm_data discounting values of deal.
  19. Não é uma dúvida muito frequente mas vale a pena explicar isso, visto que envolve os comandos getd, setd, functions e o for, muito úteis e de pouco conhecimento dos Scripts. Sabe-se que as Arrays do emulador só vão até 127 vetores, em alguns casos é necessário um limite maior, vou usar este problema como exemplo para explicar os comandos setd, getd e function. Antes de começar, vale ressaltar algumas caracteríscas das Arrays. setarray é o comando para definir uma cadeia de variáveis (vetores). setarray @exemplo[0], 1, 2, 3, 4, 5; // Define 5 vetores. setarray @exemplo[5], 6, 7, 8, 9, 10; // Define 5 vetores a partir do vetor [5], esta array tem seu fim no vetor [9] (valor 10). As Arrays começam no [0], ou seja: Var[4] na equivale ao valor 5. (vulgo exemplo acima) getarraysize(var) retorna o número de elementos (vetores) da array. dispbottom getarraysize(@exemplo); //Mostra 10 Podemos alterar valores de um vetor através do comando Set. set @exemplo[5],20; set @exemplo,0; é equivalente a set @exemplo[0],0;. O emulador adota como default o vetor [0]. Como ultrapassar o limite de 127 vetores da array? Na verdade não vamos ultrapassar pois isto é impossível (sem alterar a source), usaremos de outros meios para isto. Um Sistema. Objetivo: Ao identificar que a array chegou ao seu limite fazer o sistema passar a armazenar os valores em outra array, dando assim continuidade e interligando as arrays. Para fazer isso é necessário o uso de dois comandos, setd e getd. Setd e Getd são comandos mais dinâmicos para se trabalhar com variáveis, diferente do set normal que pede o endereço(nome) da variável, o setd pede uma String (texto: "string"). Sendo assim, é possível manipular o nome da variável com outras variáveis. O mesmo vale para getd, porém com a ação inversa, retornar o valor. Sintaxes: setd "<nome da variável>",<valor>; getd("<nome da variável>") Mas não é só isso, também é necessário algo de extrema importância para dinamizar o sistema: O comando Function. Callfunc é um comando que chama outro bloco de comandos, ou seja, você pode ter neste outro bloco, códigos que vão agir de diferentes formas de acordo com os argumentos passados no callfunc. O callfunc vem acompanhado de outros 2 comandos para auxíliar seu funcionamente, return e getarg. Return faz com que seguimento do código volte para o local de onde foi chamado (o comando callfunc) e siga dali em diante, também pode ser retornado junto a ele valores e strings no caso do callfunc ser chamado dentro de um comando. [Exemplo:if(callfunc("subtrair",4,2)== 2)] Getarg é o comando para acessar os argumentos passados pelo callfunc, se o valor não existir o emulador mostra um erro no console. Para evitar isso, pode-se usar o argumento opcional dele e definir um valor padrão que será usado caso não tenha sido passado nenhum pelo callfunc. Sintaxes: callfunc "<função>"{,<argumento>,...<argumento>}; // Para chamar a função getarg(<índice>{,<valor padrão="">}) function script Exemplo { if(getarg(0)==2) mes "Olá"; else mes "Hello"; return; // Retorna para onde foi chamado (callfunc), do contrário o script se encerra aqui. } Agora você já sabe tudo que é necessário para alcançar o objetivo, ultrapassar o limite da Array (ou quase isso). Algumas notas lógicas: é necessário passar para outra Array quando a anterior chegar ao seu limite. Precisaremos de um contador que possua o valor total de vetores. Atualizar o contador sempre que o callfunc for usado. O callfunc deve possuir 3 argumentos obrigatórios e mais outros 2 opcionais para facilitar o desenvolvimento do sistema: Nome da variável Vetor da variável Valor a ser definido [Opcional] Um argumento que nos informe se a variável é Integer (Adotemos 0) ou String (Adotemos 1) [Opcional] Préfixo da variável (@,$@,#, etc) Criando o código. Adotemos o nome do contador como <varnome>_size, onde <varnome> será uma instância definida por getarg(0). Também chamarei a função de SetArrayd, por causa do setd e getd. Levaria muito tempo e texto para eu explicar passo à passo de como chegar ao código final, então estarei mostrando-o logo e explicar o que cada linha representa. function script Exemplo { if(getarg(0)==2) mes "Olá"; else mes "Hello"; return; // Retorna para onde foi chamado (callfunc), do contrário o script se encerra aqui. } callfunc("SetArrayd",<varnome>,<vetor>,<valor>{,<tipo{,<préfixo>}}); function script SetArrayd { if(getarg(1) < 0) return -1; // Calculando a array que adicionaremos o Vetor if((getarg(1) / 127) != 0) set .@VarIndex, (getarg(1) / 127); //Abreviando os comandos setd .@VarSize$, (getd(getarg(4,"")+getarg(0)+"_size"); // isto equivale a <varname>_size. setd .@VarNome$, (getd(getarg(4,"")+getarg(0)+"_"+.@VarIndex$+(!getarg(3) ? "" : "$"))); // Calculando o tamanho de <varname>_size. if(getarg(1) >= getd(.@VarSize$)) setd .@varName$+"_size",getd(.@varName$+"_size")+1; if(getarg(2) == 0 && getd(.@VarNome$+"["+getarg(1)+"]") != 0 && (getd(.@VarNome$+"["+getarg(1)+"]")-1) >= 0) setd .@varName$+"_size",getd(.@varName$+"_size")-1; // Checando se a variável chegou no limite. if(getd(.@VarNome$) >= 127) { setd .@varName$+"_size",0; set .@VarIndex,.@VarIndex+1; set .@VarNome$, (getd(getarg(4,"")+getarg(0)+"_"+.@VarIndex$+(!getarg(3) ? "" : "$"))); //Atualizando o nome } // Definindo a variável setd .@VarNome$,getarg(2); // Eu não estou setando a variável .@VarNome$ aqui e sim <varname> (Variável passada pelo callfunc) return; // Volta para o local callfunc } callfunc("GetArrayd",<varnome>,<vetor>,<string? (1="sim)">); function script SetArrayd { return getd(getarg(0)+(getarg(1)/127)+(getarg(2,0) ? "$" : "")+"["+getarg(1)+"]"); }
  20. if enabled, you will need edit ! to another symbol in script or change atcommand symbol.
  21. PvP Master Ultimate [v1.3.0] http://www.youtube.com/watch?v=j59HMVT5Ov4 (Sorry for header in portuguese, english version here) Name: PvP Master Ultimate (old topic here) Author: Mooka Description: PvP Master can stand until 10 arenas, has 8 types of rankings and two ways to show the score. Has many commands for whisper, Sounds from Unreal Tournalment, many options of announce, classifies a leader for the arena (who has more points), and also has 3 options of arenas (PvP, GvG, PvP Baby). The arenas can be added directly on the list or by the command !map (that will instantaneously add the arena to the list). Download: PvP Master Ultimate.txt | Tables | Tables [Lang] | Unreal Tournament Sounds (MediaFire) | Unreal Tournament Sounds (SVN Link) | Alternative Download [scripts] PvP Master Functions Ways to organize the scores of the ranking. The PvP Master has two ways to organize the scores of the players. The Ranking Ratio is the standard one, uses the equation Kills - Deaths = Score. The other option of organization of the ranking is the normal one, by the ones with more Kills. Types of Ranking. The PvP Master has 8 ways to show the rankings, being possible to access them by npc or by Whisper. The command to show the ranking is !Ranking. The ranking to be showed should be defined by adding it after "!Ranking": #pvp ou #gvg. In case you wish to see the ranking of death, add "#die" at the end. The npc has a list informing all of its commands, just type "!help". It's also possible to define the limit of showing of the ranking, the standard is until 25. Ways of Announce & System of Sounds. - When a player kills the other (scoring 1 point), some functions of the script can be activate. The first, the npc has a function of sending for each 100 kills an announce for all the server with the sound Monster Kill. Inside the arena, if the function of Sounds from Unreal Tournament is on, will be messages and sounds of the game. There's a list on the script where it's defined how many points you have to score for the sound to be sent. It's already set to your best pleasure. When dying, the player loses these points of sound. In case you wish to change or add another sound, it's really simple, note: --> set $@SoundList$[3],"Triple Kill"; When the player gets 3 points without dying, the sound Triple Kill will be sent along with an announce (Exemple: "Mooka | Triple Kill! (3 Points)") only to the arena that he's in. The name of the sound should be exactly the same of the one that's in the file data/wav and will be the same name showed at the announce, so don't use underlines or any things like that. It's also not necessary to add ".wav" at the end of the name. - There are also the Leaders of the Arenas (Those are PvP and GvG, in case of GvG one Guild), being those the first ones of the ranking, when the second one overcomes the first an announce is sent informing the new leader of the arena. Mode War of Emperium The PvP Master has a function to activate some of his functions on the maps of WoE. This function being activate will permit the counting of points in the maps of WoE. It's possible to activate the counting of points only for PvP or GvG, or both. The standard is Both. Mode PK (Player Killer - PvP In all of the Maps) Some servers are PK's, thinking of them I created this function. With it, it's possible to activate all the functions of PvP Master in any map. It's set to activate automatically, if your server is a PK and you don't wish to have this option, replace "getbattleflag("pk_mode")" for 0. Mode Of Experience The PvP Master also has a function to up on PvP! Yes, the player kills in the arena and gets experience. The mode of experience has two configurations, the standard being to use an equation to amount of experience that the player will get, the other a defined amount. The equation is this: $@getEXP*KilledLVL/KillerLVL So, standard Experience times the level of whom you killed divided by your level. If you have a smaller level than the one that you've killed, you'll get more EXP, if not, you'll get less. It's also possible to activate the lost of experience by dying at the arena. Commands for Whisper There are some other commands for Whisper from npc. All of them should be sent as Personal Message to "npc:cmd". - !warp#id - Will teleport the player to the defined arena. The ID is the number of the arena. (Doesn't work inside the arena) - !exit - Gets the player away from the arena in 5 seconds, teleporting him to his SavePoint. (Doesn't work outside the arena) - !ranking#type(#die) - Shows the player the Ranking. - !pvplider | !gvglider - Shows the leader. (1st at the Ranking) - !help#!command - Shows information of the commands, syntax, and how to use them.. Commands for GM's. - !map - Adds or removes maps from the menu, refreshing instantaneously. -- !map#add#NomeDoMapa#TipoDeArena - TipoDeArena => 0: PvP; 1: GvG; 2: PvP Baby; -- !map#del#name - Delets the map. -- !map#list - Lists the maps of the list with your ID and name. -!ban#nome#tempo#tipo - This command will ban a Player or Guild of entering any arena. -- #name - Name of the Player or Guild. -- #time - The time of punishment, the counting is in minutes, so, instead of putting 2 (for hours), put 120. -- #type - The Type, is simply 0 for player and 2 for guild. - !truncate(#pvp|#gvg) - Command to clean the ranking. Multi-language System. This function is avaliable from the v1.3.0 of the PvP Master, allows the player to choose the language to be used on NPC. For those who are not gonna use this function I recommend the v1.2.8. Notes Functional in servers SQL. How can I use it on my server? - In case of v1.3.0, you should install the list of languages, avaliable at the begining of the topic as "tables#lang". - In other versions, just follow the comments on the SQL archive. / How to Install Tables / Open your PhpMyAdmin and select the database of your server, click the button SQL: If a window is opened, copy the content of the list of PvP Master and paste it in this window, then click "Send". That's it, you've installed the lists of the PvP Master. Frequent Problems: - I click the arena but it shows the Ranking! What's that? -- An error have occured to the list pvpm_map. It may not have been insert, or got unpropertly changed. - [v1.3.0] The npc has no messages! Why? -- You didn't insert the list pvpm_lang OR insert THE LIST of LANGUAGES more than once, for exemple: insert the list pvpm_table#PT 2X! Liked the PvP Master? Show gratitude at the topic! This way I can change my mind and add new functions to it. 2006~2011@Mooka PvP Master Ultimate.rar
×
×
  • Create New...