Jump to content

Senos

Global Moderators
  • Content Count

    183
  • Joined

  • Last visited

  • Days Won

    8

Reputation Activity

  1. Like
    Senos got a reaction from joaolrb in Cliente Completo   
    Creio que aqui tenha tudo que você precise.
    http://herc.ws/wiki/Main_Page

    Qualquer dúvida, pergunte. 
  2. Like
    Senos reacted to johnlincon in Configurações de Jogo pt_BR   
    Vejo um monte de servidores que usa todos os botões do esc traduzidos, exceto o ''game settings''.
    Tomei a liberdade de editar o botão.
    Façam bom proveito.

     

    esc_gamesettingsBR.zip
  3. Upvote
    Senos got a reaction from JulioCF in exp tabble   
    Sobre o exptable: 

    Sobre a mudança de arquivo cronus p/ herc, acho bem difícil.. os emuladores são bem divergentes, provável que não seja compatível.
  4. Like
    Senos reacted to Ridley in February Digest 2020   
    February Digest 2020
    The following digest covers the month of February 1st - February 29th 2020

    Team Changes
    @Wolf is now a Global Moderator The following Members have been moved to the new "Retired Staff" Group. Special thanks to Ind and Jman for funding Hercules and this community - and also to everyone else who has contributed towards it. @Ind, @Jman and @Mystery - Former Administrators @Masao, @Nameless2you, @Ragno and @Sneaky - Former Script Developers @malufett, @Michi and @mkbu95  - Former Core Developers The following Members were contributing as High Council, Moderator or Graphics Moderator and got moved to Community Contributor Group. Thank you for your help and contribution. @Eurydice, @Gepard, @Muad_Dib, @Xgear, @Yommy, @jaBote, @Judas, @Adel and @Uzieal  
    Added
    Added/updated packets, encryption keys and message tables for clients up to 2020-02-06. (#2625)
    Added support for the expanded barter shop, see example script in `npc/custom/expandedbartershop.txt` and the related script commands `sellitem()`, `startsellitem()`, `sellitemcurrency()`, `endsellitem()`. Note: this includes a database migration. (part of #2625)
    Added the new script commands `cloakonnpc()` and `cloakoffnpc()`. (part of #2615)
    Added the new script command `achievement_iscompleted()` to check for achievement completion. (part of #2615)
    Added Exploration Achievement NPCs. (#2615)
    Added support for an `OnNPCUnload` label, where a script can perform its cleanup before being unloaded (such as removing mapflags, etc). (part of #2590)
    Added the Rebellion jobchange quest and its related mobs and items. (#2621)
    Added support for switching madogear type. See the documentation for `setmount()` and the related `MADO_ROBOT` and `MADO_SUITE` constants. (#2586)
     
    Changed
    Changed the logic of `skill_get_index` to make it easier to add new skills, custom or official. (#2596)
    Refactored `int_party` code related to exp sharing calculations. (part of #2601)
    Updated the Duel system cooldown to be configurable with seconds granularity. The `duel_time_interval` setting can be safely updated and with `@reloadbattleconf`, applying to any existing cooldowns. (#1495)
    Converted `PACKET_ZC_STATE_CHANGE` to use its struct format and added a function to send it to a single target. (part of #2615)
    Changed the behavior of `@unloadnpc`, `@reloadnpc`, `@unloadnpcfile` to kill the monsters that were spawned by the unloaded script (non-permanent spawns). (#2590, issue #2530)
    Updated the `mobdbconverter.py` tool to support Race, Size and Element constants. The script now requires Python 3. (#2620)
    Cleaned up a duplicate definition of `SP_VARCASTRATE` in `pc_readparam()`. (#2624, issue #1311)
    Extended `itemskill()` with a new `ISF_INSTANTCAST` flag to be able to cast a skill without cast time. (part of #2616)
    Extended `itemskill()` with a new `ISF_CASTONSELF` flag to be able to forcefully cast a skill on the invoking character. (part of #2616)
    Converted `ZC_AUTORUN_SKILL` to use its struct format. (part of #2616)
     
    Fixed
    Fixed some signed/unsigned mismatch compiler warnings. (#2601, issue #1434)
    Fixed some cases where the family exp sharing state wasn't correctly detected. (part of #2601)
    Fixed a duplicate "Skill Failed" message when using Asura Strike. (part of #2248, issue #1239)
    Fixed an issue that made a character turn to face its target after casting Asura Strike. (#2248, issue #1239)
    Fixed the position of a character after a failed Asura Strike cast, to be 3 cells from its original position instead of 2. (part of #2248, issue #1239)
    Fixed the status icon from the Elemental Resistance Potions and the Undead Element Scroll not disappearing when the status changes end. (#2614, issue #2593)
    Fixed a crash when using `@loadnpc`, `@reloadnpc` or `@unloadnpcfile` on a directory. (part of #2590, issue #2179)
    Fixed `PR_STRECOVERY` to only cure status effects if the target's element isn't Undead. (#2618, issue #2558)
    Fixed the mobs spawned by `mob_clone_spawn()` (`clone()`, `@evilclone`) being invulnerable because of an uninitialized `dmg_taken_rate` taking the value of 0. (#2617, issue #2607)
    Fixed a crash when the script function `getunits()` was called with an invalid mapindex. Now an error message is added when the mapindex validation fails. (#2619)
    Fixed a crash when `map_forcountinmap()` was called with an invalid mapindex. Now the function will return 0 instead. (part of #2619)
    Fixed clientside errors when using a `ViewData` block in the mob database without specifying a `HairStyleId`. The hair style will now default to 1 when a `ViewData` block is specified. (#2622)
    Fixed the damage calculation being too low when using weapons of type `W_RIFLE` (in pre-renewal). (#2623)
    Fixed an issue that could cause homunculi to be in an unexpected partially-vaporized state (i.e. when a Vanilmirth kills its own master through `HVAN_EXPLOSION`). (#2626)
    Fixed NPC ID validation when `SECURE_NPCTIMEOUT` is defined, causing scripts to abort with an "Unknown NPC" error on the console. (#2627, issue #2073)
    Fixed the skill condition checks and the `flag` parameter of `itemskill()`. The constants `ISF_NONE` and `ISF_IGNORECONDITIONS` are now available. (part of #2616)
    Fixed the `itemskill()` items to provide their proper Aegis behavior, in their requirement checks, self-targeting and item consumption.  (#2616, issue #819)
    Fixed the Earth Spike Scroll to consume 10 SP when `SC_EARTHSCROLL` is active. (part of #2616)
    Fixed warnings in the HPMHookGenerator. (1000b10026)
     
     
    Deprecated
    None  
    Removed
    None  
    Special thanks to
    @Haru, @4144, @Kenpachi, @Asheraf
     
    Additional thanks to @Haziel for creating the badge for the retired staff group
  5. Upvote
    Senos got a reaction from fogocalvoeua in Compilando o Hercules com Cygwin   
    Parabéns meu querido.

    Ótimo tutorial.
  6. Like
    Senos reacted to Dastgir in how to make expired script for VIP ?   
    - script VIP script FAKE_NPC,{ OnPCLoginEvent: if (#AccountVIP >= gettimetick(2)) { ModExp = 100; ModDrop = 100; } else if (getgroupid() == 2) { ModExp = 150; ModDrop = 150; } end; } function script F_TicketAddVip_3 { #AccountVIP = gettimetick(2) + (60*60*24*3); ModExp = 150; ModDrop = 150; mes "[ ^990099Geovani^000000 ]"; mes "You received 3 days of VIP Account!"; close; } Try this
  7. Like
    Senos reacted to Ridley in kRO Patch - 2020-01-22   
    Original Patch Notes
    안녕하세요.
    (주)그라비티 라그나로크 온라인 운영팀입니다.
    1월 22일(수) 정기점검 시간 및 업데이트에 대한 안내입니다.
    ■ 점검시간
    - 전 서버 : 10:00 ~ 17:00 ※ 점검시간 중 (10:00 ~ 13:00) GNJOY 시스템 점검이 진행되어 일부 서비스 (로그인, 웹몰, 캐시충전)가 중단됩니다.
    ■ 본 서버 패치내용
    - 1월 냥다래 의상이 업데이트 됩니다. → 추가 목록(4종): 의상 얼음의 날개(한정), 의상 언더림 안경(파란색), 의상 모노크롬 캡, 의상 추억의 밤하늘 → 삭제 목록(3종): 의상 모란 머리장식, 의상 고양이 귀 리본, 의상 가넷 티아라 → 신규 의상장비는 "의상 인챈트 스톤 상자 21"로 교환 할 수 있습니다. - [패션스톤] 의상 인챈트에 아래 아이템이 추가됩니다. → 의상 대지의 마스터, 의상 라구엘의 날개, 의상 미라클 플랜트, 의상 지터벅 캡, 의상 그레이트 드라큘라 뿔, 의상 오렌지 토끼, 의상 히멜메즈의 가발(물색), 의상 히멜메즈의 가발(노랑), 의상 히멜메즈의 가발(흰색), 의상 히멜메즈의 가발(연보라), 의상 히멜메즈의 가발(핑크), 의상 히멜메즈의 가발(청록), 의상 히멜메즈의 가발(칠흑), 의상 히멜메즈의 가발(갈색), 의상 얼음의 날개, 의상 언더림 안경(파란색), 의상 모노크롬 캡, 의상 추억의 밤하늘 - 일루전 오브 언더워터가 업데이트됩니다. → 이즈루드의 게인(izlude 132 49)으로부터 친구가 실종된 사연을 들어주세요. → 일루전 오브 언더워터의 장비가 환상의 강화사 NPC의 인챈트 대상으로 적용됩니다. → 아이템 목록: 일루전 세인트 로브, 일루전 바다의 울부짖음, 일루전 메일, 일루전 모리아네의 헬름 일루전 모리아네의 망토, 일루전 모리아네의 벨트, 일루전 모리아네의 펜던트 - 일루전 오브 언더워터 업데이트 기념 이벤트가 진행됩니다. - 설날 맞이 이벤트가 진행됩니다. - 겨울 프로모션 도전하라! GO 이벤트가 종료됩니다. - 애시드 테러 스킬이 팔라딘의 디펜더 스킬에 데미지가 감소되지 않는 현상이 수정됩니다. - SP가 0인 경우 오토스펠로 아도라무스가 발동하지 않던 현상이 수정됩니다. - 리플레이에서 마도기어 외형이 특정상황에서 보이지 않는 현상이 수정됩니다. - 리플레이 재생 시 특정상황에서 클라이언트가 종료되는 현상이 수정됩니다. ■ 사크라이 서버 패치내용
    - 캐릭터 생성 시 도람족 UI의 New 표시가 제거됩니다. - 길드창고 이용 내역 확인 시 아이템명이 Unknown item으로 출력되는 현상이 수정됩니다. - 일루전 오브 언더워터의 일부 몬스터의 HP 및 경험치가 조정됩니다. - 일부 일루전 오브 언더워터 몬스터명이 통일됩니다. → 변경 전: 심연의 → 변경 후: 심해의 - 미캐닉이 특정상황에서 마도기어에 탑승하지 않아도 마도기어에 탑승한 것처럼 보이는 현상이 수정됩니다. 점검 내용을 숙지하시어 이용에 차질 없으시길 바랍니다.
    감사합니다.

    (주) 그라비티 라그나로크 온라인 운영팀
    Translated Patch Notes
    References
    http://ro.gnjoy.com/news/notice/View.asp?BBSMode=10001&seq=7215&curpage=1
    Retrieved from https://ragnarok.gamepedia.com/RO_Patch_(2020_Jan._22).
  8. Like
    Senos reacted to meko in Functions   
    The documentation resides in the /doc folder of your cloned git repository and the scripting engine documentation is in /doc/script_commands.txt
    The version you have locally may not be the version that is currently on GitHub so always use the documentation in the /doc subfolder of the emulator root folder since its version is always the same as the version of your Hercules emulator (when properly cloning and pulling with git)
     
    Please be aware that some commands have been deprecated over the years and replaced with other commands. The documentation will tell you when a command is deprecated and you can find more details in the Deprecation thread.
  9. Like
    Senos reacted to fogocalvoeua in Compilando o Hercules com Cygwin   
    Removed.
  10. Like
    Senos got a reaction from Mihael in [v2.0]Basic Premium System   
    Broken link: http://pastebin.com/kedhbBeM
  11. Like
    Senos reacted to Ridley in kRO Patch - 2019-05-02   
    Original Patch Notes
    안녕하세요.
    (주)그라비티 라그나로크 온라인 운영팀입니다.
    5월 2일(목) 정기점검 시간 및 업데이트에 대한 안내입니다.
    ■ 점검시간
    - 전 서버 : 10:00 ~ 15:00 ■ 공통 패치내용
    - 2019 멜론 페스타 이벤트가 진행됩니다. → 가정의 달을 맞이하여 게펜에서 멜론 축제가 개최됩니다. → 게펜에서 라벤더(geffen 86 35)를 만나보세요. - 슈퍼스타R 크리스탈 이벤트가 종료되며 관련 아이템이 삭제됩니다. → 삭제 아이템 목록: 슈퍼스타R 티켓, 슈퍼스타R 티켓상자, 돈 크리스탈치노의 상자, 패밀리 크리스탈의 상자, 부하 크리스탈의 상자 → 슈퍼스타 티켓교환원 NPC가 삭제됩니다. - 프론테라의 단상에 위치한 유저 공모전 수상자들의 동상이 제거됩니다. - 봄꽃 축제 이벤트 맵 및 벚꽃 이펙트가 제거됩니다. - 게임 실행 시 게임 런처의 이미지가 변경됩니다. - 일부 헤어에서 보라색으로 염색 시 검은색으로 보이던 현상이 수정됩니다. - 호문클루스 스킬 "멘탈 체인지", "디펜스"의 설명이 명확하게 변경됩니다. ■ 본 서버 패치내용
    - 5월 출석체크 이벤트가 업데이트됩니다. → 5월 2일 점검 후 ~ 5월 28일까지 진행되며, 이벤트 기간 중 20일 출석하면 모든 보상을 수령할 수 있습니다. 출석체크 보상 1일차 2일차 3일차 4일차 5일차 [비매품] 전투교범&풍선껌 1개 [비매품] 지크프리드의 증표 1개 [비매품] 생명보험 증서 5개 [비매품] 티르의 축복 5개 [비매품] 화이트 슬림포션 상자 1개 6일차 7일차 8일차 9일차 10일차 [비매품] 이그드라실 씨앗 상자 1개 [비매품] 확성기 3개t [비매품] 소형 생명수 5개 [비매품] 빛나는 방어 스크롤 5개 [비매품] 올마이티 3개 11일차 12일차 13일차 14일차 15일차 상급 전투교범 2개 [비매품] 소형 마나수 3개 [비매품] 회복력 향상포션 5개 [비매품] 풍선껌 5개 [비매품] 미스틱 파우더 5개 16일차 17일차 18일차 19일차 20일차 [비매품] 중형 생명수 5개 [비매품] 블레싱 10레벨 스크롤 5개 [비매품] 민첩성증가 10레벨 스크 5개 월드 이동권 10개 [비매품] 인벤토리 확장 쿠폰 1개 - 5월 카츄아의 비밀상자가 업데이트 됩니다. → 자세한 내용은 5월 2일 점검 중 공개될 예정입니다. - 초보자 프로모션 이벤트가 종료됩니다. - 골드 PC방 마일리지 2배 이벤트가 종료됩니다. - 이그드라실 서버 골드 PC방 경험치 30% 증가 이벤트가 종료됩니다. - 초보자 프로모션 오픈기념 이벤트의 아이템 할인 판매 이벤트가 종료됩니다. → 할인 종료 아이템 목록: (한정) 헬스장 회원권 10개 상자, (한정) 탑승용 고삐 상자, (한정) 인벤토리 확장 쿠폰 10개 상자 - 4월 냥다래 한정 이벤트가 종료됩니다. → 의상 만개하는 벚꽃 아이템이 구성품에서 삭제됩니다. → '4월의 의상 인챈트 스톤 뚝딱상자'는 의상 교환시 더 이상 획득이 불가능합니다. 점검 내용을 숙지하시어 이용에 차질 없으시길 바랍니다.
    감사합니다.
    (주) 그라비티 라그나로크 온라인 운영팀
    Translated Patch Notes
    Hi.
    Gravity Ragnarok Online Operations Team.
    May 2 (Thursday) regular maintenance time and update instructions.
    ■ Inspection time
    - All servers: 10:00 to 15:00 ■ Common patch contents
    - 2019 Melon Pesta event is going on. → The Melon festival is held in Geffen with the family's moon. → Meet Lavender in Geffen (geffen 86 35). - The Superstar R Crystal Event ends and the related items are deleted. → Deleted Item List: Superstar R Ticket, Super Star R Ticket Box, Money Crystal China Box, Family Crystal Box, Load Crystal Box → Superstar Ticket Exchange NPC is deleted. - The statues of the user contest winners on the Prontera stage will be removed. - Spring Flower Festival event map and cherry blossom effect will be removed. - The game launcher image will change when the game is run. - The phenomenon that causes some hairstyles to look black when dyeing to purple is corrected. - Homunculus skill "Mental Change", "Defense" descriptions will be clarified. ■ This server patch contents
    - May attendance check event is updated. → After the inspection on May 2 ~ May 28, you can receive all the compensation if you attend 20 days during the event period. Daily Login Rewards Day 1 Day 2 Day 3 Day 4 Day 5 [For Sale] Combat Manual & Bubblegum 1 count [For Sale] Mark of Siegfried 1 count [For Sale] Life Insurance Certificate 5 count [For Sale] Tyr's Blessing 5 count [For Sale] White Slim Potion Box 1 count Day 6 Day 7 Day 8 Day 9 Day 10 [For Sale] Yggdrasil Seed Box 1 count [For Sale] Megaphone 3 count [For Sale] Small Water Bottle 5 count [For Sale] Shining Defensive Scroll 5 count [For Sale] Almighty 3 count Day 11 Day 12 Day 13 Day 14 Day 15 Advanced Combat Manual 2 count [For Sale] Small Mana 3 count [For Sale] Resilience Enhancement Potion 5 count [For Sale] Bubblegum 5 count [For Sale] Mystic Powder 5 count Day 16 Day 17 Day 18 Day 19 Day 20 [For Sale] Medium Water Bottle 5 count [For Sale] Level 10 Blessing Scroll 5 count [For Sale] Level 10 Increase AGI Scroll 5 count World Movement 10 count [For Sale] Inventory Extension Coupon 1 count - May Kachua's secret box is updated. → Details will be released during inspection on May 2. - Beginner promotional event ends. - Gold PC room mileage doubles event will end. - Yggdrasil Server Gold PC room experience 30% increase event will end. - The item sale event of the commemorative event of the novice promotion promotion openings end. → Discount end items list: (Limited) Gym Membership Card 10 boxes, (Limited) Boarding Ring Box, (Limited) Inventory Extension Coupon 10 boxes - The 4th month will be ended. → The cherry blossom items in full bloom are removed from the servers. → 'April Costume Enchant Stone Dropped Box' is no longer available when changing clothes. Please familiarize yourself with the contents of the checklist so that you can use it.
    Thank you.
    Gravity Ragnarok Online Operations Team
    References
    http://ro.gnjoy.com/news/notice/View.asp?BBSMode=10001&seq=7107&curpage=1
    Retrieved from https://ragnarok.gamepedia.com/RO_Patch_(2019_May_02).
  12. Upvote
    Senos got a reaction from Kyoya G in Ajuda com servidor novo   
    Não muda muita coisa, o que mudam são os caminhos dos arquivos e alguns modos de configurar, pare um tempo e estude os arquivos, entre nas pastas, leia, que rapidamente você pegará o jeito. 
    E aqui tem diversos tutorias: http://herc.ws/wiki/Main_Page
  13. Upvote
    Senos reacted to luizragna in item que toque um som quando atacar   
    Você também pode usar a label custom OnAttackMob:
    https://forum.cronus-emulator.com/files/file/1355-custom-label-onattackmob-3-variáveis-especiais/
    Ai usa os comandos playsound e o rand()
  14. Upvote
    Senos reacted to LordJasz in item que toque um som quando atacar   
    Você consegue editar no Act Editor.
    Primeiro você abre o Act Editor, joga o Act do item no programa (COM O ARQUIVO SPR NO MESMO LOCAL DO .ACT)
    Local Onde você seleciona a ação do personagem:

    Local onde seleciona em qual frame sairá o som.

    Local onde você seleciona qual som vai sair durante o frame.

    No caso de "Add New..." vai aparecer uma caixa de mensagem requisitando qual é o nome do arquivo.
    Ex.: bansheeATK.wav

  15. Upvote
    Senos reacted to luizragna in Ajuda - mcache Files   
    @happles abre o cmd e digita: cd C:/caminhoDaSuaPastaDoEmulador
    exemplo: cd C:\Users\Luiz Victor\Hercules
    Após isso, aperta enter e digita o comando: map-server --load-plugin mapcache --map NomeDoSeuMapa
    Aperta enter e aguarda, se mesmo assim você não conseguir, pode me add no discord que eu explico. DzG Nightmare#5780
     
  16. Upvote
    Senos reacted to luizragna in Ajuda - mcache Files   
    Amigo, eu estava com o mesmo problema que você, e fiz o seguinte:
    Segue este tutorial: http://herc.ws/wiki/Building_HPM_Plugin_for_MSVC
    Onde ele diz YourPlugin (ou movespeed como mostra nas imagens), você troca por mapcache.
    Basicamente você só vai trocando os sample por mapcache.
    Então depois de compilar (como mostra no tutorial), vai funcionar
  17. Upvote
    Senos got a reaction from ljsb in Script Intermediário (Aula 2)   
    Scripting Intermediário! - 2
    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/
     
    Assunto da aula:
    - Arrays
     
    As arrays não passam de um conjunto de variáveis, que são usados dentro de loops que são For e Whiles como ensinados na aula anterior, podem servir de Banco de Dados, já que podemos guardar/alterar/modificar/remover valores dento delas e certamente economizam certas linhas se bem usadas no script. São uma das melhores ferramentas para scripters hoje em dia.
     
    Array, não possui tradução para português, mas podemos entender como Conjunto de Variáveis, o nome já diz tudo, não? Vamos ver as maneiras certas para a utilização de uma array:
    +==========+======+=======+|Variável  | Norm | Array |+==========+======+=======+|$Str$     | OK!  | OK!   |+----------+------+-------+|$@Str$    | OK!  | OK!   |+----------+------+-------+|@Str$     | OK!  | OK!   |+----------+------+-------+|#Str$     | OK!  | ERRO! |+----------+------+-------+|Str$      | OK!  | ERRO! |+----------+------+-------+|$Int      | OK!  | OK!   |+----------+------+-------+|$@Int     | OK!  | OK!   |+----------+------+-------+|@Int      | OK!  | OK!   |+----------+------+-------+
    E agora temos algumas variáveis que dão erros, caso o uso for desta maneira:
    #str$ - ERROStr$ - ERRO  
    Porque ocorreram esses erros? o_o
    Simplesmente porque as arrays não podem ser "setadas" à um jogador, por isso existem as variáveis normais. 
     
    Sintaxe da Array:
    setarray <Nome da Array>[<Index>],<Valor>{,<Valor>,...,<Valor>};  
    Exemplos:
    setarray @i[0],1000,2000,3000,4000;  
    @array [0] = 1000
    @array [1] = 2000
    @array [2] = 3000
    e @array [3] = 4000
     
    Agora se eu usar após o exemplo anterior (lembre-se, APÓS):
    setarray @array[1],1,2;   
    @array[0] = 1000 (Pois o 0 não foi alterado, e somente o 2, 3 se a index anterior for 0).
    @array[1] = 1
    @array [2] = 2
    @array [3] = 4000
     
    Temos o comando cleararray, que limpa a array:
    cleararray <nome do array>[<primeiro valor para alterar>],<valor>,<número de valores para definir>;  
    Esse comando vai mudar o valor de uma array e ao mesmo tempo adicionar outro. Exemplo:
    setarray @i[0],1000,2000,3000,4000;  
    cleararray @i[0],0,6; Isso transformará todos os valores em 0.
    cleararray @i[0],245,1; Isso transformará o valor do @i[0] == 1000, para 245.
    cleararray @i[1],345,2; Isso transformará o valor do @i[1], @i[2] para 345.
     
    Simples, não? Ensinaremos então, o comando getarraysize que é muito útil também no Loop (For):
     
    Essa função retorna o número de valores que estão contidos dentro de uma array, no caso, um valor específico. Exemplo:
    setarray @i[0],1000,2000,3000,4000; set @i_size,getarraysize(@i); Isso vai fazer com que @i seja igual a 4, pois temos 4 "indexes".
     
    Agora se eu fizer:
    setarray @i[0],1000,2000,3000,4000,0; set @i_size,getarraysize(@i); Será de qualquer maneira 4, pois 0 é igual a nada, então não contará.
     
    Existe também o copyarray, como podemos ver a utilização desse:
    copyarray <array de destino>[<primeiro valor>],<array fonte>[<primeiro valor>],<número de elemento a serem copiados>;  
    Esse comando faz com que você copie o valor de uma array, vejamos:
    setarray @i[0],1000,2000,3000,4000; copyarray @i2,@i[0],@i[1]; Essa array @i2 terá o primeiro valor 1000, e o segundo 2000.
     
    Mas porque Wolf? Vejamos, o @i2[0] == 1000, e o @i[1] == 2000, pois copiamos o valor index de uma outra array. E os outros valores da array? Se os outros valores da array não foram copiados, retornaram 0 em caso de uso incorreto.  
    Vamos falar agora do comando DeleteArray. Esse comando vai deletar um VALOR ESPECÍFICO em uma array.
    setarray @i[0],1000,2000,3000,4000;  
    Agora caso eu usar:
    deletearray @i[0],1;  
    O deletearray irá DELETAR o valor 1000, e irá mover os outros, se tornando:
    setarray @i[0],2000,3000,4000;  
    Então @i[0] passará a ser 2000 e não mais 1000, e assim por diante!
     
    Fim da aula de Arrays, e vejamos para finalizar, um exemplo de uso:
    mes "Deseja registrar sua banda em nosso concurso?";if (select("Sim:Não")==2) close;next;input @banda$;setarray $banda$,[getarraysize($banda$)+1],@banda$; // Essa array adicionará o nome da banda (@banda$) na array $banda$.next;mes "Banda registrada com sucesso!";for (set @i,0; @i <= getarraysize($bandas$); set@i, @i+1) { mes $bandas$,[@i];} set registrado$,@str$; // Isso deixará o jogador registrado permanentemente no script.close;  
    Agradeço ao Keoy por ter me instruído a criar as aulas, ser meu professor antigamente, e eu por criar as aulas com base nas aulas que ele fazia, adicionando os comandos copyarray, deletearray, cleararray e atualizar o snippet.
  18. Upvote
    Senos got a reaction from Magnificent in [Help]Premium System   
    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;}
  19. Upvote
    Senos got a reaction from Like it~* in Script Intermediário (Aula 5)   
    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.
  20. Upvote
    Senos reacted to Like it~* in [Guia e orientação] Criando habilidades. PT-BR   
    Criando habilidades ou clonando-as   Introdução   Uma grande área onde os jogadores têm dificuldade é adicionar novas habilidades para a fonte e o cliente. Abaixo será documentado como implementar essas novas habilidades.   A habilidade   A habilidade que estaremos trabalhando é simples.  
    Nome: Earth Bolt Level Máx: 10 Tipo: Ativa Custo de SP: 20 + 5*SkillLV Alvo: 1 inimigo Tempo de conjuração: 2 seg Delay: 1 seg Duração: Instantânea Descrição: Causa dano mágico de elemento terra ao inimigo, conforme level da habilidade, a 150% MATK por hit. Basicamente, essa habilidade deve atingir 1 inimigo e lidar com 10 hits de 150% MATK, propriedade elemental da Terra e deve ser baseada em dano mágico.    
    Abra /src/map/skill.h Role para baixo até encontrar  
    EL_STONE_HAMMER, EL_ROCK_CRUSHER, EL_ROCK_CRUSHER_ATK, EL_STONE_RAIN,    
    Depois daqui é onde nós adicionamos quaisquer habilidades adicionais. É melhor dar às habilidades um ID personalizado para começar. Então, vamos adicionar a nossa habilidade "Earth Bolt". Depois disso, adicione MG_EARTHBOLT = 8443,    
    MG_ definição significa "Mago", você vai trabalhar para fora as siglas como você percorrer as habilidades. Definimos a base da habilidade. Como você pode ver, o id de habilidade é definido como '8443' desde Stone Elemental's Stone Rain é definido como 8442 (e é o última habilidade de jogador acessível).   Abra /src/map/skill.c   Esse arquivo é onde definimos as implementações de habilidades reais. Para habilidades de alvo único, todo o processamento dessa habilidade irá em skill_castend_damage_id (para habilidades prejudiciais) ou skill_castend_nodamage_id (para skills que não causam danos).   Habilidades baseadas em mágica ou mágia.   Como o Earth Bolt é baseado em danos, encontre a função skill_castend_damage_id e localize:  
        case AB_RENOVATIO:     case AB_HIGHNESSHEAL:     case AB_DUPLELIGHT_MAGIC:     case WM_METALICSOUND:     case MH_ERASER_CUTTER:     case KO_KAIHOU:    
    A razão pela qual estaremos colocando a case para Earth Bolt aqui é porque:    
           skill->attack(BF_MAGIC,src,src,bl,skill_id,skill_lv,tick,flag);    
    A definição BF_MAGIC significa que a habilidade é baseada em magia e deve ser calculada sob cálculos de batalha mágica. Assim, após a case NJ_HUUJIN adicionar:  
        case MG_EARTHBOLT:    
    Habilidades baseadas em armas   No caso de querer adicionar uma habilidade que é baseada em Arma, em vez de Magia, encontre:  
        case WM_GREAT_ECHO:     case GN_SLINGITEM_RANGEMELEEATK:     case KO_JYUMONJIKIRI:     case KO_SETSUDAN:     case GC_DARKCROW:     case LG_OVERBRAND_BRANDISH:     case LG_OVERBRAND:    
    E adicione a case depois disso. Se quiséssemos que o Earth Bolt fosse baseado em armas, ficaria assim:  
        case WM_GREAT_ECHO:     case GN_SLINGITEM_RANGEMELEEATK:     case KO_JYUMONJIKIRI:     case KO_SETSUDAN:     case GC_DARKCROW:     case LG_OVERBRAND_BRANDISH:     case LG_OVERBRAND:     case MG_EARTHBOLT:    
    No entanto, vamos manter a função Magic em vez disso.   Abra /src/map/battle.c   Nesta função, todos os cálculos de danos principais são realizados. E em funções separadas, as % modificadoras para as habilidades são armazenados. Portanto, para os nossos danos de 150%, adicionamos o extra de 50% (já que 100% é o padrão) na função apropriada. Ataques baseado em mágica Para ataques baseados em Magia, os modificadores são encontrados em battle_calc_magic_attack. Basta encontrar:  
    case NPC_EARTHQUAKE:     skillratio += 100 +100*skill_lv +100*(skill_lv/2);     break;    
    E adicione o modificador de danos abaixo. Como Earth Bolt é baseado em magia, nós adicionaremos-a aqui.  
        case MG_EARTHBOLT:         skillratio += 50;         break;    
    Isso agora significa que o Earth Bolt causará dano mágico de 150% MATK.   Átaques baseado em armas   Para ataques baseados em armas, os modificadores são encontrados em battle_calc_weapon_attack. Basta encontrar:  
        case NPC_VAMPIRE_GIFT:         skillratio += ((skill_lv-1)%5+1)*100;         break;    
    E adicione seu modificador de dano lá. Por exemplo, se o Earth Bolt fosse baseado em Weapon, acrescentaríamos:  
        case MG_EARTHBOLT:         skillratio += 50;         break;    
    O + = 50 significa simplesmente "Adicionar 50% ao 100%" para danos de ATK de 150%.   Suporte a banco de dados de habilidades   Tecnicamente falando, a base da habilidade está agora correta. Claro, se você quiser implementar habilidades mais complexas, há muito mais para isso. A seção separada será criada no futuro para isso. Mas, por enquanto, precisamos implementar as entradas do banco de dados de habilidades. Os arquivos abaixo podem ser encontrados em db / (pre / re) /. Apenas um de ambos (pre / re) precisa ser atualizado, é o qual você usa em seu servidor.   Nessa parte é sempre aconselhável que você tenha alguma habilidade escolhida para se utilizar como base, pois facilitará muito a criação e/ou clonagem de sua habilidade. Aqui há diferenças, então dependendo do emulador usado, cada forma será de um jeito, caso o seu emulador seja alguns dos abaixos, continue. Caso não, pule para a parte: ** p/ Hercules.   ** p/ rAthena, brAthena, Cronus.   Skill_db.txt   Para a nossa habilidade Earth Bolt, podemos agora digitar o seguinte: Estrutura:
    8443,5,8,1,2,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic, 0, MG_EARTHBOLT, Earth Bolt    
    Isso define que: Earth Bolt tem um intervalo de 5 células, bate várias vezes, é elemento da Terra e alvos 1 inimigo. Ele pode ser interrompido, e é de dano de tipo mágico. A quantidade de acessos aumenta em 1 em cada nível, com um nível máximo de 10.   Skill_cast_db.txt   Para a nossa habilidade Earth Bolt, podemos agora digitar o seguinte: Estrutura:
    8443,2000,1,000,0,0,0    
    Isso define que: Earth Bolt tem um segundo tempo de ligação e um tempo de atraso de 1 segundo. Não há atraso de caminhada após o lançamento.   Skill_require_db.txt   Para o nosso Earth Bolt, podemos agora digitar o seguinte: Estrutura:
     
    8443,0,0,25: 30: 35: 40: 45: 50: 55: 60: 65: 70,0,0,0,0,0,0,0,0,0,0,0,0, 0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0    
    Isso define que: Earth Bolt requer 25 SP no nível 1, 30 SP no nível 2 .. 70 SP no nível 10. Pode ser lançado com qualquer arma, não requer nenhum estado e não requer nenhum item para ser consumido. =========================================================================== ** p/ Hercules.   Skill_db.txt  
     
     
     
    ===========================================================================   Skill_tree.txt   Esta parte do banco de dados não é necessária se não for lida por uma classe. No entanto, se você quiser que uma classe aprenda uma habilidade, você deve fazer uma entrada em skill_tree.txt. Um exemplo abaixo:
     
    MG_EARTHBOLT: { MaxLevel: 10 MG_FIREBOLT: 5 MG_LIGHTNINGBOLT: 5 }   Isso define que: Earth Bolt pode ser aprendido por Mago, tem um nível máximo de 10 (para esta classe), e requer habilidade MG_FIREBOLT no nível 5 e habilidade MG_LIGHTNINGBOLT no nível 5. Tecnicamente, estas são as partes geralmente utilizas com arquivos de banco de dados de habilidade. Há mais, mas isso ficará pra vocês explorarem.   Arquivos .lua e .lub   As seguintes implementações estão de acordo com a Revisão 228 do Projeto Lua (2012-05-23). A implementação é diferente entre muitas versões de cliente, mas geralmente há 2 implementações:   Sem arquivos skillinfoz   Em data/lua files/skillinfo/skilltreeview.lua encontre: {"MG_FIREWALL", 18; Pos = 19, MaxLv = 10, NeedSkillList = {6, 12}} Adicione a baixo:
    {"MG_EARTHBOLT",8443; Pos = 20, MaxLv = 10, NeedSkillList = {19,20}}  
    Com arquivos skillinfoz   Em skillid.lua encontre: ECLAGE_RECALL = 3035, Depois adicione:
    MG_EARTHBOLT = 8443, in data/lua files/skillinfo/skilldescript.lua localize:
    [SKID.MG_THUNDERSTORM] = { "Thunder Storm", "Max Level:^777777 10 ^000000", "Type:^777777 Offensive ^000000", "SP Cost:^777777 24 + 5*SkillLV ^000000", "Target:^777777 cell ^000000", "Range:^777777 9 cells ^000000", "Cast Time:^777777 1*SkillLV sec ^000000", "Cool Down:^777777 2 sec ^000000", "Duration:^777777 0.2*SkillLV sec ^000000", "Effect:^777777 Hits every Enemy in a 5x5 area around the targeted cell with 1 Wind Element Bolt per level at a rate of 1 bolt every 0.2 seconds. Each bolt does 0.8*MATK Wind element damage. ^000000", "[LV 1]^777777 1 Bolt ^000000", "[LV 2]^777777 2 Bolts ^000000", "[LV 3]^777777 3 Bolts ^000000", "[LV 4]^777777 4 Bolts ^000000", "[LV 5]^777777 5 Bolts ^000000", "[LV 6]^777777 6 Bolts ^000000", "[LV 7]^777777 7 Bolts ^000000", "[LV 8]^777777 8 Bolts ^000000", "[LV 9]^777777 9 Bolts ^000000", "[LV 10]^777777 10 Bolts ^000000", }, Depois adicione:
    [SKID.MG_EARTHBOLT] = { "Earth Bolt", "Max Level:^777777 10 ^000000" "Type:^77777 Active ^000000" "SP Cost:^777777 20 + 5*SkillLV ^000000" "Target:^777777 1 Enemy ^000000" "Cast Time:^777777 2 sec ^000000" "Cool Down:^777777 1 sec ^000000" "Duration:^777777 Instant ^000000" "Effect: ^777777 Deals SkillLV bolts of Earth magic damage to one enemy, at 150% MATK per hit.^000000", }, skilltreeview.lua mude:
    [JOBID.JT_MAGICIAN] = { [1] = SKID.MG_STONECURSE, [2] = SKID.MG_COLDBOLT, [3] = SKID.MG_LIGHTNINGBOLT, [4] = SKID.MG_NAPALMBEAT, [5] = SKID.MG_FIREBOLT, [6] = SKID.MG_SIGHT, [8] = SKID.MG_SRECOVERY, [9] = SKID.MG_FROSTDIVER, [10] = SKID.MG_THUNDERSTORM, [11] = SKID.MG_SOULSTRIKE, [12] = SKID.MG_FIREBALL, [13] = SKID.MG_ENERGYCOAT, [18] = SKID.MG_SAFETYWALL, [19] = SKID.MG_FIREWALL },  para:
    [JOBID.JT_MAGICIAN] = { [1] = SKID.MG_STONECURSE, [2] = SKID.MG_COLDBOLT, [3] = SKID.MG_LIGHTNINGBOLT, [4] = SKID.MG_NAPALMBEAT, [5] = SKID.MG_FIREBOLT, [6] = SKID.MG_SIGHT, [8] = SKID.MG_SRECOVERY, [9] = SKID.MG_FROSTDIVER, [10] = SKID.MG_THUNDERSTORM, [11] = SKID.MG_SOULSTRIKE, [12] = SKID.MG_FIREBALL, [13] = SKID.MG_ENERGYCOAT, [18] = SKID.MG_SAFETYWALL, [19] = SKID.MG_FIREWALL, [20] = SKID.MG_EARTHBOLT }, skillinfolist.lua Mude:
    [SKID.ECL_SEQUOIADUST] = { "ECL_SEQUOIADUST"; SkillName = "Sequoia Dust", MaxLv = 1, SpAmount = { 0 }, bSeperateLv = false, AttackRange = { 7 }, } Para:
    [SKID.ECL_SEQUOIADUST] = { "ECL_SEQUOIADUST"; SkillName = "Sequoia Dust", MaxLv = 1, SpAmount = { 0 }, bSeperateLv = false, AttackRange = { 7 }, }, [SKID.MG_EARTHBOLT] = { "MG_EARTHBOLT"; SkillName = "Earth Bolt", MaxLv = 10, SpAmount = { 25, 30, 35, 40, 45, 50, 55, 60, 65, 70 }, _NeedSkillList = { { SKID.MG_FIREBOLT, 5}, { SKID.MG_LIGHTNINGBOLT, 5} } Finalizando   Não se esqueça que você precisará de adicionar o arquivo Sprite e BMP apropriado para a habilidade. Use o nome MG_EARTHBOLT como o nome do arquivo em: data\texture\À¯ÀúÀÎÅÍÆäÀ̽º\item data\sprite\¾ÆÀÌÅÛ   Efeitos   Vá a src/map/skill.h, Procure a skill que deseja adicionar/editar o efeito:
     
            case WE_BABY:             if(sd) {                 struct map_session_data *f_sd = pc->get_father(sd);                 struct map_session_data *m_sd = pc->get_mother(sd);                 bool we_baby_parents = false;                 if(m_sd && check_distance_bl(bl,&m_sd->bl,AREA_SIZE)) {                     sc_start(src,&m_sd->bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv));                     clif->specialeffect(&m_sd->bl,408,AREA);                     we_baby_parents = true;                 }     Aqui está sendo utilizado como exemplo a habilidade de convocação das classes bebês. Onde 408 é o efeito adicionado para que seja mostrado ao utilizar a skill. Para a sua habilidade customizada, como ela é uma habilidade nova, não há nenhum efeito, então você terá que adicioná-lo ao arquivo, seguindo de exemplo a mesma forma mostrada acima. Para saber a lista de todos os efeitos, basta utilizar doc/effect_list.txt.     Fontes e créditos   https://github.com/HerculesWS/ https://github.com/Cronus-Emulator/ https://github.com/brAthena/ https://github.com/rAthena/ http://forum.cronus-emulator.com/ https://forum.brathena.org/ http://herc.ws/wiki/Adding_new_skills http://herc.ws/ https://google.com/   Comentários   Decidi fazer esse tutorial pois percebi que ainda não há nenhum guia com esse assunto em PT-BR e havia uma grande demanda de pessoas procurando. Tinha dado uma olhada no Hercules e percebi que é um bom tutorial, mas ainda estava incompleto e bem desatualizado, então decidi usa-lo como base e também pensei, por que não criar um? Espero que esteja de boa compreensão, caso estiver faltando algo que eu esqueci ou que eu não saiba, por favor me informe para torná-lo o melhor possível. Estou aberto a sugestões e críticas construtivas. Façam um bom proveito 
  21. Upvote
    Senos reacted to Ind in Hercules Ultimate Localization Design   
    .@md_name$ = "Endless Tower";would have to become.@md_name$ = _("Endless Tower");
  22. Upvote
    Senos reacted to Ind in Hercules Ultimate Localization Design   
    Hercules Ultimate Localization Design
    Hello~! - What?!
    Servers are now able to run under any number of languages, without having any of the default files modified Designed by Haruna and Ind  
    Translating NPCs without editing them
    By launching map server with the --generate-translations param a .pot (.po template) file will be created with all of the servers translate-able strings (including all npc dialogue), this file can be edited in text mode or by utilising any .po editor (there are many out there; for a high range of OSes) A .po file does not need to be fully translated to be used, map server will know when loading the file, and will fallback to the hardcoded string in the npc files as necessary Users are able to change their language with the new @lang command, @lang controls what language users see in @commands (msg_txt stuff) as well as over npc dialogues map-server.conf has a new setting called default_language where server owners may specify which language should be used as a base When you have a new .po file you want map server to use, add it to db/translations.conf Easy to Maintain
    Since .po is a widely used format there are many tools that can help with merging for example Poedit, which easily consolidates a translated .po file with a newly generated .pot. For example when you have a translated .po and since it was created npc dialogs were added or modified all you have to do is launch map server to generate a new .pot, open your old .po in Poedit, go "Catalog -> Update from POT file" and it will insert the new translatable strings without touching your existing translations, it will also notify you of any "obsolete" strings that are in your .po file but that are no longer in use Script Command Macro
    Besides messages.conf, all the dialogue utilised by 'mes' and 'select' is included in the .pot automatically, this patch also introduces a mechanism for utilising strings outside of these commands, the script macro _() which can be employed just as if it were a script function, for example set .@status$,_("Available"); tells map server to export "Available" as a translate-able string when it is run with --generate-translations (when running map server normally the macro has no overhead during runtime) Special Thanks to
    Raizen and Roberto from Cronus, we would not have worked on this if it weren't for them Links~!
    Commit Editing Example
  23. Upvote
    Senos reacted to Aeromesi in Name with spaces,   
    Here's something that basically works with exactly what you're looking for.

    So either you let it check all names each time the server restarts (close and restart or @reloadscript) it will delete any name inside SQL database that got spaces and automatically fix them. like "R A G    N A" would become "RAGNA". or "M O N K E Y" would become "MONKEY". If you ever want to just load the script inside of a MySQL program to query, I gave you the raw version to.

    After using my script, this is what I was able to do:

    Before: (Notice all the names)

    PS: Inside of script change `hercules` to whatever database name yours is.


     
     
    After: (Notice names)


     
     
     
    Here's the script:
     
    // Created by Aeromesi // Deletes the spaces inside of your name as a player everytime the server restart,    /* Raw Version, just load into any MySQL program (HeidiSQL, MySQL administrator to run this query...)     MAKE SURE TO CHANGE 'hercules' to your database name.       SELECT * FROM `hercules`.`char` WHERE `name` LIKE '% %';     update `char` set `name` = REPLACE(name,' ','')   */ // OnInit will allow everytime your server go in maintenance restart etc when it starts up it automatically fix any name with spaces. prontera,0,0,0    script    SpaceDeleter    -1,{ OnInit: query_sql("SELECT * FROM `hercules`.`char` WHERE `name` LIKE '% %'"); query_sql("update `char` set `name` = REPLACE(name,' ','')"); debugmes "All accounts with spaces fixed"; end; }

    Also I just figured out if I fix a character that was "W O W" and became "WOW" if I make another "W O W" he won't be fixed.


    UPDATE:
    Isn't there like a way to choose in your client hex the allowed characters for character creation? I might be wrong. I might have to find a way where if there converted name equals that of something that already exist they must change their name, maybe get a free name changer ticket? Not sure how to work my way around this one.
  24. Upvote
    Senos reacted to Daifuku in Daifuku | Graphics, Sprites, Maps, Wiki, Forum, Advertising, Scripts & more   
    contact me on facebook!           join discord for freebies!


    welcome to my paid services. 
    below you can find a variety of things I can do to make your server stand out!
    if you need anything else, just ask. 
     

    Logo 25$* Patcher 20$* Animated Banner 10$* Advertising Banner 10$* Loading Screen 2$* Login Screen 5$* Facebook Banner + Profile 10$* Forum Skin 30$* Wiki Skin 20$* Interface Skin 20$* Website 30$* Icons 2$* *Please note that prices listed are for re-sellers and come without PSD. 
    *For exclusive graphics with or without PSD please ask for a quote. 

     
     
    Advertising 10$/week*  Wiki Editor 20$/week*   Support GM 20$/week*  Event GM 20$/week*  Fast Refresh Client 50$*  Normal Client 10$*  FluxCP Setup 10$*  Scripts 5$*  Singature 5$*   

    well, that was pretty much all I could think of.
    for a preview of my works please check the second post below!
    if you need anything else, just ask. 
  25. Upvote
    Senos reacted to Aeromesi in Devil's Square Hard-Mode 2021 NEW! (@editds, @disableds, @repeatds!)   
    View File Devil's Square Hard-Mode 2021 NEW! (@editds, @disableds, @repeatds!)
    Devil Square [Hard-Mode]
     
    (Special thanks to: IeYaseru (Old friend who gave me a DS script I reinvented)
     
    =============================================================================================================
     
    Description:
    In this version when you die and get warped out, if you hurry up you'll be able to come back into Devil Square again.
    If you don't hurry up and repay to join back into the event, someone else could have taken your spot, so be quick about getting back in!
    Since players can die, and repay to come back inside the event, there's no need to cancel out the event if no one joins. (Which is in Type 1, once all players die that attempted the Devil's Square the event is ended.)
    NOTE: You WILL have to REPAY the amount of Zeny to re-enter.
     
    =============================================================================================================
     
     
    Difference in Type 1:
    In this version of Devil's Square, once the amount of players have joined, that's it.
    You won't be able to continue going back inside of Devil Square once you die, after entering and Devil Square starts, it will be closed.
    All other players won't be able to join, and it's up to all the players to either complete Devil Square or die and not be able to come back in.
    If no players enter in the timeframe, it will cancel out the event.
    Also counts up the Max amount of Users when they enter Devil's Square. Once the Max Users have been established, no one else can join, and then it's just up to that team of people!
    Once all the Players have died and warped out of the event, it will announce that all the users who entered have failed Victory in Devil Square, and the event will be reset.
     
     
    FINAL NOTE: You can't use BOTH Type 1 and Type 2, as they occur on the same map (This could be changed in the future for Easy/Hardcore modes as long as I make or copy the same map with different variable names.
     
    New Additions to Revision 5 (For Type 1 And Type 2):
    Created commands:
    @disableds - Allows you to disable Devil Square whenever you want (This feature is also inside of the NPC!)
    @repeatds - Allows you to repeat the Devil Square on the go. (This feature is also inside of the NPC!)
    @editds - Allows you to edit, or as I put it "Over Ride" the settings in the OnInit: inside of [DS] Organizer::DSORG.
     
    Changes happen in the menu whether the event is active or not. If it's active it will allow you to disable or go to the Player Menu, if it's unactive it'll ask if you want to Start Devil's Square.
    Basically redesigned a lot of the aspects of the script, beforehand it didn't even work, and had errors upon errors.
    Made the script to be flexible and totally configurable!
    Future additions/ideas: Add the ability to also edit the mob data for each Round as well as the MvP list.
    Also before hand if it was <= 5 users it would only spawn 8 Treasure Chests, otherwise it would spawn 16. Now you can choose as much as you want!
    When a GM is editing an option inside of Devil's Square, another GM cannot edit an option until that GM is done editing an option.
     
    NOTE: Not every Treasure Chest is the same either!
    (Special thanks to: IeYaseru (Old friend who gave me a DS script I reinvented)
    Submitter Aeromesi Submitted 07/28/16 Category Events & Games  
×
×
  • Create New...

Important Information

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