Jump to content

_Okuz_

Members
  • Posts

    92
  • Joined

  • Last visited

  • Days Won

    3

_Okuz_ last won the day on October 15 2016

_Okuz_ had the most liked content!

5 Followers

Profile Information

  • Gender
    Male

Recent Profile Visitors

2434 profile views

_Okuz_'s Achievements

Poring

Poring (1/15)

17

Reputation

6

Community Answers

  1. Boa tarde westkian, Vamos a solução da sua dúvida. Antes de mais nada, recomendo que você faça a leitura completa do tópico oficial que explica o funcionamento do Sistema VIP neste link: Testado com o cliente 20130515 e funcionando perfeitamente. Agora vou explicar os possíveis locais onde você terá que alterar a quantidade de slots para então recompilar seu emulador e ver as mudanças surtindo efeito ok? Em player.conf você poderá configurar algumas coisas, como: Aumento do tamanho do armazém (vip_storage_increase) Aumento da experiência recebida (vip_base_exp_increase / vip_job_exp_increase) Penalidade de experiência ao morrer (vip_exp_penalty_base / vip_exp_penalty_job) Aumento da taxa de drop (vip_drop_increase) Uso de gemas (vip_gemstone) Mensagem de aumento de experiência ao efetuar o login (vip_disp_rate) Em groups.conf você poderá configurar comandos e permissões especiais: { id: 5 /* Id do grupo VIP que pode ser alterado em login_athena.conf */ name: "VIP" inherit: ( "Player" ) /* can do everything Players can */ level: 0 commands: { rates: true who: true /* coloque seus comandos aqui */ } permissions: { /* coloque suas permissões aqui */ } }, Em login_athena.conf você poderá configurar algumas coisas, como: Qual será o ID do grupo (informado em groups.conf) responsável pelos VIPs (vip_group) Quantidade de slots a mais que uma conta VIP poderá ter (vip_char_increase) OBS: Se vip_char_increase estiver com o valor -1 ele irá utilizar o valor que está informado diretamente em #MAX_CHAR_VIP no arquivo src/config/core.h. Agora vamos ao nosso cenário, suponha que eu queira 9 slots pra personagens comuns e 3 para personagens VIPS. Sua configuração em src/config/core.h deverá ser a seguinte: /// Uncomment to enable VIP system. #define VIP_ENABLE /// Enable VIP script changes? (requires VIP_ENABLE) /// The primary effects of this are restrictions on non-VIP players, such as requiring /// a Reset Stone to change into third classes, paying more for equipment upgrades, and /// so forth. Note that the changes are based on euRO, not iRO. #define VIP_SCRIPT 0 #ifdef VIP_ENABLE #define MIN_STORAGE 300 // Default number of storage slots. #define MIN_CHARS 9 // Default number of characters per account. #define MAX_CHAR_VIP 3 // This must be less than MAX_CHARS #define MAX_CHAR_BILLING 0 // This must be less than MAX_CHARS #endif Em src/common/mmo.h você também deverá editar a seguinte linha: /** Max number of characters per account. Note that changing this setting alone is not enough if the client is not hexed to support more characters as well. * Max value tested was 265 */ #define MAX_CHARS 12 Feito isso, basta recompilar o emulador.
  2. Olá westkian e Haikenz, A dúvida de vocês é bem simples de ser respondida, contudo, vou deixar algumas informações que talvez possam auxilia-los futuramente. Quase todas as mensagens que são exibidas no cliente são encontradas nos arquivos data/msgstringtable.txt e conf/msg_conf/map_msg.conf, exceto por scripts de NPC e outras mensagens que são hardcoded (diretamente no código). Neste caso, estão na msgstringtable.txt. Dessa forma, recomendo a vocês que utilizem o bom e velho control+f nos arquivos acima citados para modificarem as mensagens ao seu bel prazer. Como a mensagem se repete algumas vezes no arquivo ela deve ser traduzida de acordo em todas as linhas, uma vez que vocês não sabem qual é a que vai ser exibida pelo client (se você souber, basta traduzir apenas a que será utilizada). PS: Pra ativar / desativar a mensagem utilizem este guia. EDIT -- Parte da sua dúvida que não foi respondida foi a respeito dos 0 a mais correto? Preste bem atenção, isso é uma máscara de formatação para algum numero que será exibido ai, ao estilo sprintf. No seu caso, deve ter algo como %.3f%%, troque para %.1f%% ou %f%% que acho que deve resolver. Siga o exemplo deste arquivo: https://raw.githubusercontent.com/zackdreaver/ROenglishRE/master/data/msgstringtable.txt Atenciosamente, _Okuz_.
  3. Yes! I said the same thing on my previous posts. I have listed your solution as my first option to resolve this issue but Secrets gave us some info regarding a command that pretty much resolves the whole thing. By the way I released the latest version, without source mod like you said Thank you again! PS: I love the way you script, it's so clean and easy to understand! Hi, can you please check the line: 37? parse_line: ';' Are you sure? Have you tried the latest one?
  4. Yes! I said the same thing on my previous posts. I have listed your solution as my first option to resolve this issue but Secrets gave us some info regarding a command that pretty much resolves the whole thing. By the way I released the latest version, without source mod like you said Thank you again! PS: I love the way you script, it's so clean and easy to understand!
  5. Meh.. I knew about the compatibility but I was waiting for someone to come with another solution like you did. I'm used to use the 'set' and I've been using this old syntax since eAthena but I'm gonna try to stop. Again, I'm sorry for that and feel free to replace them. Thank you for this command, it'll be very usefull for this npc. EDIT-- Here is the final version without source mod as @Secrets suggested. // Author: _Okuz_ // Version: 1.0.3 - 16:15 15/10/2016 prontera,150,150,5 script Reset NPC 690,{ mes "[Reset NPC]"; mes "..."; mes "..."; mes "..."; mes "..."; next; .@option = select("Reset Specific Stat:Reset Status:Reset Skills:Reset Both") - 1; if (Zeny < .reset_settings[.@option]) { mes "[Reset NPC]"; mes "..."; close; } Zeny -= .reset_settings[.@option]; .@option = 1<<.@option; if (.@option & 1) { mes "[Reset NPC]"; mes "..."; next; .@status = select("Str:Agi:Vit:Int:Dex:Luk") - 1; setarray .@backup_status[0], readparam(bStr), readparam(bAgi), readparam(bVit), readparam(bInt), readparam(bDex), readparam(bLuk); resetstatus; for (.@i = 0; .@i < 6; .@i++) { if (.@status == .@i) continue; statusup2 callsub(S_getStatusConst, .@i), .@backup_status[.@i] - 1; StatusPoint -= needed_status_point(callsub(S_getStatusConst, .@i), -(.@backup_status[.@i] - 1)); } } else { if (.@option & 2 || .@option & 8) resetstatus; if (.@option & 4 || .@option & 8) resetskill; } close; // Arg(0): status_index S_getStatusConst: .@i = getarg(0); switch (.@i) { case 0: return bStr; case 1: return bAgi; case 2: return bVit; case 3: return bInt; case 4: return bDex; case 5: return bLuk; default: debugmes "[Error] : Invalid 'status_index' on " + strnpcinfo(3) + "."; } end; OnInit: setarray .reset_settings[0], 5000, // 5000z for Specific Stat 5000, // 5000z for Status 5000, // 5000z for Skills 7500; // 7500z for Both (Status + Skills) } Tested and working.
  6. You can do the inverse of this: https://rathena.org/wiki/@go_delay_when_hit Or maybe something related to this: https://rathena.org/board/topic/107708-ressurection-and-go/?hl=prevent_logout#entry310175
  7. Why so rude? I'm using so many variables cause I thought it was better than repeating the setbattleflag / getbattleflag for each flag he wants do edit, but you're right there's no need for that. EDIT-- Euraka! Now I remember why I needed to use so many variables... I can't get the original rates to reset the event on monday =/ I followed your instructions but correct me if I did something wrong. // Author: Lupus // Edited: _Okuz_ - script Weekend Floating Exp -1,{ OnInit: // To force the event to run even if you have to shutdown your server for some reason... if (gettime(4) != 5 && gettime(4) != 6 && gettime(4) != 0) end; OnFri0000: // start double rates on Friday 00:00 setbattleflag "base_exp_rate", getbattleflag("base_exp_rate") * 2; setbattleflag "job_exp_rate", getbattleflag("job_exp_rate") * 2; setbattleflag "item_rate_heal", getbattleflag("item_rate_heal") * 2; setbattleflag "item_rate_use", getbattleflag("item_rate_use") * 2; setbattleflag "item_rate_equip", getbattleflag("item_rate_equip") * 2; setbattleflag "item_rate_card", getbattleflag("item_rate_card") * 2; setbattleflag "item_rate_mvp", getbattleflag("item_rate_mvp") * 2; setbattleflag "item_rate_adddrop", getbattleflag("item_rate_adddrop") * 2; setbattleflag "item_rate_treasure", getbattleflag("item_rate_treasure") * 2; atcommand "@reloadmobdb"; announce "[Event] : Double rates enabled!",bc_all,0xFF6060; end; OnMon0000: // stop double rates on Monday 00:00 setbattleflag "base_exp_rate", getbattleflag("base_exp_rate"); setbattleflag "job_exp_rate", getbattleflag("job_exp_rate"); setbattleflag "item_rate_heal", getbattleflag("item_rate_heal"); setbattleflag "item_rate_use", getbattleflag("item_rate_use"); setbattleflag "item_rate_equip", getbattleflag("item_rate_equip"); setbattleflag "item_rate_card", getbattleflag("item_rate_card"); setbattleflag "item_rate_mvp", getbattleflag("item_rate_mvp"); setbattleflag "item_rate_adddrop", getbattleflag("item_rate_adddrop"); setbattleflag "item_rate_treasure", getbattleflag("item_rate_treasure"); atcommand "@reloadmobdb"; announce "[Event] : Double rates disabled!",bc_all,0xFF6060; end; } Test results: http://imgur.com/a/lyLI5
  8. Hello Akkarin!He wants to double the rates, so he needs to edit a little bit more than just the clock events. And I have tested the script that I left before and guess what... it is working...Thank you!
  9. EDIT-- Here is what I found: statusup uses pc_statusup to increase status and it does subtract status points when raising a status. statusup2 uses pc_statusup2 to raise or decrease status and it doesn't subtracts status points when increasing / decreasing a status. Here is the source doc: We have three options to resolve this issue: 1) Change the usage of statusup2 for statusup and loop through each status to increase them by 1 each time till the .@backup_status[<status>] amount. (without source mod) 2) Change the statusup arguments to receive an extra argument that is the amount of points we want to increase. (source mod required) 3) Use needed_status_point() to calculate the points that we need to subtract. (without source mod) I choosed the second one and here is the final script and the .patch / .diff... I'm gonna send a PR regarding this but honestly I don't know if they will accept or not. EDIT-- The second option breaks up statusup backward compatibility and should not be used.
  10. This has nothing to do with stat reset, just fyi. I'm not able to read the script.c to check its behavior now. I just tried that because it says it'll recalculate status then I thought it would work for that. Do you know any command or any way to recalculate the status?EDIT-- I'm gonna read all the atcommands, maybe we can find the solution there.
  11. // Author: _Okuz_ // Version: 1.0.1 - 11:46 13/10/2016 prontera,150,150,5 script Reset NPC 690,{ mes "[Reset NPC]"; mes "..."; mes "..."; mes "..."; mes "..."; next; set .@option, select("Reset Specific Stat:Reset Status:Reset Skills:Reset Both") - 1; if (Zeny < .reset_settings[.@option]) { mes "[Reset NPC]"; mes "..."; close; } set Zeny, Zeny - .reset_settings[.@option]; set .@option, 1<<.@option; if (.@option & 1) { mes "[Reset NPC]"; mes "..."; next; set .@status, select("Str:Agi:Vit:Int:Dex:Luk") - 1; setarray .@backup_status[0], readparam(bStr), readparam(bAgi), readparam(bVit), readparam(bInt), readparam(bDex), readparam(bLuk); resetstatus; for (set .@i, 0; .@i < 6; set .@i, .@i + 1) { if (.@status == .@i) continue; statusup2 callsub(S_getStatusConst, .@i), .@backup_status[.@i] - 1; } recalculatestat; } else { if (.@option & 2 || .@option & 8) resetstatus; if (.@option & 4 || .@option & 8) resetskill; } close; // Arg(0): status_index S_getStatusConst: set .@i, getarg(0); switch (.@i) { case 0: return bStr; case 1: return bAgi; case 2: return bVit; case 3: return bInt; case 4: return bDex; case 5: return bLuk; default: debugmes "[Error] : Invalid 'status_index' on " + strnpcinfo(3) + "."; } end; OnInit: setarray .reset_settings[0], 5000, // 5000z for Specific Stat 5000, // 5000z for Status 5000, // 5000z for Skills 7500; // 7500z for Both (Status + Skills) } Every time you get an error try posting some screenshots of your map-server console. By doing this you helps me to understand what exactly is going on. Besides that, make sure that your rAthena is up to date. Att, _Okuz_.
  12. Seems that statusup is not counting them correctly. I need to find a way to recalculate the status points after using the statusup... maybe there is already a built in function for that, but honestly I don't know. I'll working on it, thank you for your report Brahms! Att, ​_Okuz_. EDIT-- Hey Brahms, are you able to test something for me? Change this: for (set .@i, 0; .@i < 6; set .@i, .@i + 1) { if (.@status == .@i) continue; statusup2 callsub(S_getStatusConst, .@i), .@backup_status[.@i] - 1; } To this: for (set .@i, 0; .@i < 6; set .@i, .@i + 1) { if (.@status == .@i) continue; statusup2 callsub(S_getStatusConst, .@i), .@backup_status[.@i] - 1; } recalculatestat; // new line added to force to recalculate status points! Maybe it should work now! Att, _Okuz_.
  13. What do you mean by "is not working"? Did you get any error or something?
  14. I'm sorry for saying this but seems that this script is intended to be used in eAmod sources. Take a look at this: set .@count,countitem2(.delitems[.@u],1,0,0,254,0,getbattleflag("woe_reserved_char_id")&0xffff,(getbattleflag("woe_reserved_char_id")>>16)&0xffff); delitem2 .delitems[.@u],.@count,1,0,0,254,0,getbattleflag("woe_reserved_char_id")&0xffff,(getbattleflag("woe_reserved_char_id")>>16)&0xffff; This battleflag doesn't exist and furthermore if you google it you will find its implementation on eAmod sources. By the way the first link is a patch / diff that you can apply, but I'm not sure if it works or not. Att, _Okuz_.
×
×
  • Create New...