Jump to content

Senos

Global Moderators
  • Content Count

    183
  • Joined

  • Last visited

  • Days Won

    8

Reputation Activity

  1. Upvote
    Senos reacted to Ind in Accident | @fontcolor   
    [01:12:44] <~Ind> oh crap[01:12:52] <~Ind> i accidentally forgot a debug command in the release[01:12:53] <~Ind> [01:13:10] <~Ind> someone who noticed pmed me saying they liked it :|[01:16:22] <Streusel> wat[01:16:30] <Streusel> they liked that you forgot it?[01:16:31] <Streusel> o-o[01:16:44] <Streusel> have to wait till monday for my server to be setup[01:16:47] <~Ind> they liked the command :|[01:16:48] <Streusel> but it's prply tuesday[01:16:49] <~Ind> he*[01:16:51] <Streusel> ahh[01:16:58] <Streusel> cry, so long to wait[01:17:05] <~Ind> i did a @fontcolor to debug the color stuff during tests[01:17:07] <~Ind> and forgot to remove[01:17:21] <~Ind> it works like @font but it changes your global message color[01:19:07] <Streusel> ><[01:19:24] <Streusel> funneh[01:19:25] <Streusel> xD[01:19:57] <~Ind> he said he found it cool |: i wonder if its of any use o_O[01:20:10] <Streusel> new name and leave it?[01:20:13] <Streusel> why not!~[01:20:18] <~Ind> why new name[01:20:25] <Streusel> mm globalfont[01:20:27] <Streusel> fontg[01:20:36] <Streusel> fontcolor is so.. general[01:20:43] <Streusel> not saying what for[01:20:51] <Streusel> no?[01:21:05] <~Ind> o-o[01:27:07] <~Ind> well see o: i'll make a topic to discuss thisit does like the screen attached :< well i didnt really think about this at the time i made it, talked to a couple people so far and they think its useful o.o do we take it away or keep it?
  2. Upvote
    Senos reacted to Mystery in March Digest 2013   
    We'll be starting our Monthly Digests so that we can keep our community informed on whats going on with Hercules!
     
     
    March Digest 2013
    The following digest covers the month of March 1st - March 31st 2013.
     
    Team Addition
    [*]Wolf has joined as a Portuguese Moderator.

    Development Highlights
    [*]Hercules' Channel System (7ec1e8f) [*]Re-Introduction of ERS Report (646f978) [*]Garment Costume System (9aded8a) [*]Slot Change Feature (889a866) [*]Hercules' Map Zone Database (90f117f) [*]Re-introduction of Console Input (3b89a13) [*]Dropping of StatusChangeStateTable (70a3d73) [*]Hercules' Renewal Pincode System (d2d734c) [*]Follow Up: 84e8f18, f214021, 5b1fee9
    [*]Introduction of Account-Dependent Character Slot Count (0241d01) [*]On-Going process of Hercules Renewal (Topic)


    Command Additions / Updates
    [*]Added 'itemeffect' script command (c58f741) [*]AccountInfo command updated to work with Pincode (9b5ec24)

    Statistics
    [*]During the period there were 62 commits. [*]Of these 62 commits 15 included bug-fixes. [*]1 Commit from Pull Request [*]In this month, there were 21,330 Additions and 16,692 Deletions. [*]February's Statistics: [*]- 112 Total Commits (merges not included) [*]- 29 Bug Fixes [*]- 21 Commits from Pull Requests



  3. Upvote
    Senos reacted to Judas in 2013 Ragexe Area   
    Thanks to k3dt for upacking the clients, we have access to 2013-03 where new skills were added. RagexeRE are compiled differently so at the moment, it can't be used unless someone finds a way.
     
    Anyway, this topic is mainly for support in trying to get ragexe working since it seems that it will prove more useful than RagexeRE.
     
    Shows new skill effects ingame:
    View Video
     
     
    2013-03-20 Packet lengths:
    http://pastebin.com/7Qpw31Mk
     
    2013-03-20 Packet DB:
    http://pastebin.com/1hxk83YD (Updated Link as of 04/08/13)
    *Added itemselectwindow that Malufett helped provide
     
     
    2013-03-20 Client w/ Skip Packet Obfuscation Applied:
    Notes ~ Haven't got a chance to disable hshield yet, but everything is laid out (Bare Minimum) for you if you want to test and contribute.
    http://www.sendspace.com/file/2xtqkr
     
    I don't have the translations/translated lub files that rytech has, but here is the 2 new skills in the skill list.
     

     
     
    Problems faced so far:
    ALT+W (For Cart) won't work anymore. I tried last time on RagexeRE, and I assume the same problem on Ragexe. It says prohibit to use in area. (Packet related?)

     
    Method to log in:
    Note: This process is only for testing for now, since the client still needs to be diffed with the necessary patches.
    ragexe.exe -1rag1 /account:sci.xml -t:blah blah server
    (In bat file) where sci.xml is in the data folder
      In mysql, create a new account with no ID/Pass, and set the group_id to 99 to get a gm account
    Reason for this is due to the xml settings and the client isn't fully patched
    You may see in your console, accept account ID(blank) with password(blank)
      When you login, you can login with the blank account and log in with your character
    I had to manually create a character in mysql though, I got "Not Available" in my char select screen
      Once done, login, and you see your character you made. Toggle right and back to your character to login to the account. If you don't, then enter won't do anything.

     
    Over the few days, if no one has done it yet, I'll keep applying some patches to the client so it'll be easier to test
     
    data/sci.xml:
     

    2013-03-20 Hex Strings
    Notes: For me, if you diff with ShinsdiffPatcher the client will no longer work.
    So I think until someone updates it, we just have to manually find/replace.
    Below are the strings that was auto found by the client. [Experimental]
    *Please post a working client with these applied if possible
     
    *Credits for diff strings: k3dt, Ai4rei, GreenGox, Shinyro, diff team
    For Finding hex-strings: Shakto, MStream
      2013_03_20_J: http://supportmii.com/ro1/Clients/2013_03_20_J.7z Contains:
    bat file to login (Since we still need restore login window) Client patched with the above hex strings (Haven't w/ 30k ID or Remove Quake Animation Yet) Empty data folder with sci.xml inside to connect with   In bat file: 2013_03_20_J -1rag1 /account:sci.xml -t:Leon Leon server -> Replace Leon Leon with Yourpassword Yourusername   MStream Diff (Used with WeeDiff Patcher) WIPv1

  4. Upvote
    Senos reacted to Nameless2you in 2013/03/06 kRO Maintenance   
    Newly introduced mob(s) in Episode 14.3 Part 2:














    New NPC's:
    4_f_runain
    4_f_shalosh
    4_m_roel
    4_energy_black
    4_energy_blue
    4_energy_red
    4_energy_white
    4_energy_yellow




    New BGM:
    http://telefonica.net/web2/ziu/descargas/160.mp3 (Jittering Nightmare (160))



    New Instance map(s):




    Below are things that have been implemented prior to March 6th 2013. (06-03-2013)
    Previous newly introduced mob(s) to Sakray:









    New Skill icon(s):


    Name by order from left to right Dark Crow, Frigg Song, Full Throttle, King's Grace, Offertorium, Rebound, Telekinesis Intense & Unlimit.



    Initial skill translations:
    (These may be very, very wrong, google tends to do that)
    Guillotine Cross

    Dark Crow
    Prereq: Dark Illusion 5
    Max Levels: 5
    Type: Active/damage - Special
    Give an enemy a painful wound for 5 seconds, causing short ranged attacks to deal greater damage to the target.

    [Level 1]: 100% Damage / Melee damage received +30%
    [Level 2]: 200% Damage / Melee damage received +60%
    [Level 3]: 300% Damage / Melee damage received +90%
    [Level 4]: 400% Damage / Melee damage received +120%
    [Level 5]: 500% Damage / Melee damage received +150%

    Ranger

    No Limits
    Prereq: Fear Breeze 5
    Type: Active Buff (Self)
    Tap into the power of the god of hunting and archery to increase the explosive power of ranged attacks for a short time.

    [Level 1]: 1 minute / Increase ranged physical damage by 1.5
    [Level 2]: 1 minute / Increase ranged physical damage by 2
    [Level 3]: 1 minute / Increase ranged physical damage by 2.5
    [Level 4]: 1 minute / Increase ranged physical damage by 3
    [Level 5]: 1 minute / Increase ranged physical damage by 3.5

    Royal Guard

    King's Grace
    Prereq: Reflect Damage 5
    Type: Active Buff
    Bestow royal blessings to the caster and allies around the caster to recover HP and protect against status effects.
    Protects against (or removes?) the following statuses: Poison, Blindness , Frozen, Stone Curse, Stern (?), Sleep , External Bleeding, Curse, Confusion/Chaos, Hallucination, Silence, Burning, Cold-Slower, Crystalize, DeepS leep, Fear, Mandragora Howling

    [Level 1]: Every 5 seconds HP recovered 4%
    [Level 2]: Every 5 seconds HP recovered 5%
    [Level 3]: Every 5 seconds HP recovered 6%
    [Level 4]: Every 5 seconds HP recovered 7%
    [Level 5]: Every 5 seconds HP recovered 8%


    Credits to Ziu, Rytech & Jayed
  5. Upvote
    Senos reacted to Mystery in Ragnarok Renders   
    Ragnarok Renders 
    What is a render?
    A render is basically an image where an object in the image has a transparent background. Think of transparency as something invisible. In this case the object(s) are monsters, characters, items, etc.


    How do I make a render?
    Well there are several ways, my easy solution is just to use the magic eraser tool in Photoshop CS5. You use that and click the background, the more solid the outline of the object the easier it is to render. Some objects you may have to trace the lines so that way the eraser doesn't erase a part of the image its not supposed to. This takes much trial and error, and don't worry, as long as you don't mess up on the tracing, you can't tell its been traced.


    What does the packages contain?
    NPC cutins, official wallpapers, and fankit images. There are also login screens that have been put together, as well as loading screens. It will also have all the original images for people who want to help out or just to see what the render came from; however, wallpapers are not included because it makes the package too large.


    What format are the images in?
    The images are saved in .PNG format.
     
    Disclaimer: Not every file is in .png format (Renders Package).

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Downloads
    Renders Package (Renders [10-2-2010])
    https://github.com/Mysteries/Mysterious-Project/tree/master/Graphics/Renders [10-2-2010]
    Updated: Added blank card templates, as well as blank flags.

    Card Images
    https://github.com/Mysteries/Mysterious-Project/tree/master/Graphics/Card Images
    Comment: I don't know if this will be useful to anyone, but I figured why not. From the data.grf.

    NPC Cutins
    https://github.com/Mysteries/Mysterious-Project/tree/master/Graphics/NPC Cutins
    Info: The NPC images without a transparent background. Also from the data.grf.

    jRO NPC Cutins (2012)
    http://mysterious-project.googlecode.com/svn/trunk/Renders/jRO Cutins.rar
    Info: Thanks to Bahamut for supplying them. I made them into Renders.
     
    Rebellion (Friday October 18th 2013)
    https://github.com/Mysteries/Mysterious-Project/tree/master/Graphics/Rebellion
    Info: Trying to find some Rebellion images… in this folder there will be a mix of .jpgs and .pngs
     
    Kagerou & Oboro (Friday October 18th 2013)
    https://github.com/Mysteries/Mysterious-Project/tree/master/Graphics/Oboro&Kagerou
    Info: Trying to find some Oboro & Kagerou images


    February 1st 2014 Update~ 
     
    Did some drastic changes with my Graphic folder that houses render images:
    - Reorganized my folders
    - Renamed a bunch of files
    - Fixed Oboro and Kagerou to proper .png formats (Renders)
    - Added a new folder ‘February2014_Renders’ with additional renders I am currently working on
    - Updated Kagerou and Oboro Renders
     
    Commit link
     
    Sadly, the changes I've done were long for GitHub and won't display the diff.
  6. Upvote
    Senos reacted to latheesan in NPC Script Editor   
    Hi,
     
    NPC Script Editor is an easy to use & feature packed NPC Script Editor for ROemulator(s).
     
    Download Latest Version
     
    NPC Script Editor r600
     
    Features
    NPC Script Syntax Highlighting Standard functionalities you'd expect of a editor (file, open, print etc...) Fully implemented Find & Replace (Ctrl + F / Ctrl + H) with Go To (Ctrl + G) functions Quick Find & Highlight Tabbed Editor Tab Docking Open-Source & Easy To Use Plugin System - sample "Hello World" project in "Plugins" folder (VS2012 C# .NET) Auto-Suggest/Complete Code Folding Markers / Bookmarks NPC Script Commands Bible - Free Plugin Text Translator - Free Plugin Snippets - coming soon
     

    Hotkeys
     
    Ctrl + W = Close Current Tab
    Ctrl + Tab = Next Tab (Cycle Forward)
    Ctrl + Shift + Tab = Prev Tab (Cycle Back)
    Ctrl + N (1 ~ 9) = Opens Nth Opened Tab (e.g. Ctrl + 2 will open 2nd open tab)
    Ctrl + Space = Show auto-suggest/complete for the script command you are typing
    F1 = Select text in editor and press F1 to open NPC Script Command Bible plugin
    F2 = Select text in editor and press F2 to open Text Translator plugin
     
    What's New in Version v1.0.0.600 [*]Fixed bug with plugin service which initialized the plugin twice (slowed the app launch, now it's much better) [*]Updated plugin interface - the Initialize() method must take a string parameter (SelectionQuery) [*]Sample "Hello World" sample plugin (VS2012 C# .NET) now comes shipped with each new release - check "Plugins" folder [*]The NSE will now remember your last window position, size and monitor number (Resets with each new release) [*]Now you can open npc script file by dragging & dropping them into editor [*]NPC Script Command Bible Plugin will load custom
    "script_commands.txt" file (if it's found in "Plugins" dir) - otherwise
    it defaults to built-in resource file on the DLL. [*]Ctrl + W = Close Current Tab [*]Ctrl + Tab = Next Tab (Cycle Forward) [*]Ctrl + Shift + Tab = Prev Tab (Cycle Back) [*]Ctrl + N (1 ~ 9) = Opens Nth Opened Tab (e.g. Ctrl + 2 will open 2nd open tab) [*]Ctrl + Space = Show auto-suggest/complete for the script command you are typing [*]F1 = Select text in editor and press F1 to open NPC Script Command Bible plugin [*]F2 = Select text in editor and press F2 to open Text Translator plugin [*]Implemented F6 Hotkey = Parse Current NPC Script To Output Window and shows any syntax / coding errors [*]OutputWindow cannot be closed, and it starts hidden now [*]Improved OutputWindow handling code [*]OutputWindow now launches in hidden mode, and reveals itself on F6 keypress (if hidden) [*]Fixed Tab Order/Stop in Core Plugins [*]NPCScriptCommandsBible Plugin no longer uses internal script_commands.txt [*]script_commands.txt is converted to Windows EOL automatically before parsing - no need to manually convert it now [*]Re-Written NPCScriptCommandsBible Plugin's script_commands.txt Parser [*]Plugin Code Optimized [*]Fixed unnecessary trailing space with command info parsing - NPCScriptCommandsBible [*]Enabled word wrap and forced vertical scroll bar - NPCScriptCommandsBible [*]F1 hotkey now guesses the word at caret position (if a selection wasn't there) [*]New script file(s) that are opened now automatically converted to CRLF (EOL) [*]Fixed minor bug with F1 Guess Word At Caret function [*]Fully Implemented "Open Recent" (History) Feature [*]U.I Improvement - If the same file is already opened, that tab window is shown instead of opening the same file twice (or more) [*]Enabled brace matching [*]Fixed Minor Bug With Start-Up Sequence [*]Fixed crash bug with opening files with the editor [*]Removed Global Hotkey and replaced with application level hotkey feature

     
    Demo
     

     

     

     

     

     
    Thanks for trying my editor.
    Any comments and feedback would be much appreciated.
    NPC Script Editor r314.zip
  7. Upvote
    Senos got a reaction from insidemybrain in Script Intermediário! - (Aula 7)   
    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!
  8. Upvote
    Senos got a reaction from JulioCF in Script Intermediário! - (Aula 7)   
    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!
  9. Upvote
    Senos got a reaction from JulioCF in Simple editing in Board.   
    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.
  10. Upvote
    Senos reacted to Ind in Simple editing in Board.   
    forgot to update this here. Yes it was applied, thank you very much.
  11. Upvote
    Senos reacted to Ind in Hercules Renewal   
    Starting today we'll be going throughout all of our source code to modify how functions are called. so what?
    Benefit
    With this new implementation chances to have custom source modifications conflict when you update hercules will be drastically reduced. How? Instead of modifying existing functions users will be able to create a new version of them elsewhere, e.g. in a custom file, and have it replace the original one. How? very simple.
    battle->check_target = my_new_check_target_function; PluginsThis change opens the possibility for a new plugin implementation in the future.
    Project Vision
    We understand this move will conflict with some points in our project vision, we'll be modifying it soon.
    More
    We want Hercules to stand out, with that in mind we've been planning features exclusive to Hercules, features other projects won't be able to merge. And how is that even possible? features that will integrate with our forum is one example of them. For example a feature capable of automatically looking for new updates in scripts/modifications downloaded from our upcoming downloads section.
  12. Upvote
    Senos reacted to malufett in MvP and @reloadscript   
    this could be done in src easily..
     
    MVP killed -> save to db left respawn time
    Server restarted or npc reloaded -> server fetch respawn time from db then parse then load to its ticking process before respawn
     
    this will only work if the MVP mob dies after server initial start...
     
    ATM just an idea and the codes are still in my brain..if I have time I'll do it..
     

  13. Upvote
    Senos got a reaction from Niunzin in 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!!
  14. Upvote
    Senos got a reaction from Rayzir in 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!!
  15. Upvote
    Senos got a reaction from JulioCF in 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. 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.
  17. Upvote
    Senos got a reaction from Niunzin 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.
  18. Upvote
    Senos reacted to Ind in Obtaining Hercules   
    Obtaining Hercules through Git on Windows
    Downloads
    Download and Install MSysGit Download the latest TortoiseGit

      Installation
    Alright, first go through MSysGit installer and just set it up (its used as a base for TortoiseGit). then once you install MSysGit, launch the installer you just downloaded for TortoiseGit, you'll be prompted by a window similar to the following


    The next window is "Choose SSH Client", select "TortoisePLink", hit Next.


    The next window is "Custom Setup", do not change anything unless you know what you're doing, hit Next.


    We're done with the installation, that was easy, wasn't it?


    Obtaining Hercules
    Go to the folder where you want Hercules to be placed, right click and select "Git Clone..."


    in the URL field, type the following:
    https://github.com/HerculesWS/Hercules.git ensure the 'Directory' field is as desired, and hit 'OK'


    Now Hercules is being downloaded


    Just wait for it to complete the download of your working copy and you'll be good to go.

    Updating Hercules
    Right-Click the folder where you downloaded your working copy and within the TortoiseGit menu, select "Pull..." as shown below


    On the following window just hit 'OK', and your working copy will update.


  19. Upvote
    Senos reacted to Ind in Obtaining Hercules   
    Git Troubleshooting
    Please, commit your changes or stash them before you can merge.Aborting.Git doesn't update modified files even if they don't conflict unless they're properly "committed" in your local working copy, to do so is simple and advantageous (it will keep a log of your changes for yourself; so you can always go back and check what was changed and when)
    - On Unixgit commit -am "your log message, anything at all" - On Windows
    1. Right click your folder -> Git Commit -> "master"
    2. (optional) type the log message
    3. Hit 'OK'
  20. Upvote
    Senos reacted to Ind in Obtaining Hercules   
    Obtaining Hercules through Git on Linux
    CentOS
    Step 1: rpm -Uvh http://repo.webtatic.com/yum/centos/5/latest.rpm Step 2: yum install --enablerepo=webtatic git-all Step 3: yum install --enablerepo=webtatic --disableexcludes=main git-all  
    Debian/Others
     
    Step 1: apt-get install git  
     
     
    Obtaining a Working-Copy
    Type the following to create a Hercules working copy in your home (~) directory
    git clone https://github.com/HerculesWS/Hercules.git ~/Hercules Updating a Working-Copy
    Type the following when inside your working copy
    git pull
  21. Upvote
    Senos reacted to Ind in Obtaining Hercules   
    Obtaining Hercules
    Hercules is available through GitHub, a web-based hosting service for software development projects that use the Git revision control system.
    Obtaining Hercules through Git on Windows Obtaining Hercules through Git on Linux Git Troubleshooting

      Support
    Looking for assistance on getting Git to work? Post here

    Alternatively...
    GitHub also provides a SVN Mirror. We won't officially work to support many branches or repository-features in SVN, but it should remain in-sync with the latest stable release, based on master branch in git.
    Windows
    You need to download TortoiseGit The address is http://github.com/HerculesWS/Hercules  
    Linux
    Typing the following creates a working copy of hercules at your home directory svn checkout http://github.com/HerculesWS/Hercules ~/Hercules  
     
     
  22. 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;}
  23. Upvote
    Senos got a reaction from Niunzin in Script Intermediário (Aula 4)   
    Script Intermediário! - 4
    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, como já estou no processo de criações de aulas de script, começarei a ensinar sobre setd's e getd's, na qual muitos acham comandos super difíceis de entender, deixarei bem claro, extremamente fáceis, o manuseio dos comandos são simples, passam a ser complexos quanto a códigos grandes, porém nada que uma boa estudada nos ajude a compreender cada um dos dois.
     
    Primeiro assunto da aula:
    - Setd e Getd
     
    Sintaxe do comando Setd: 
    setd "<nome da variável>",<valor>;  
    O comando setd funciona igualzinho ao comando set, a diferença é que o nome da variável é identificada com string.   Exemplo: set $var$, "Poring"; setd "$var$", "Poporing";mes $var$; // Aparecerá Poporing setd "$" + $var$ + "123$", "Poporing é legal";mes $Poporing123$; // Vai mostrar Poporing é legal  
    Sintaxe do comando Getd: 
    getd("<nome da variável>");   
    Retorna uma referência da variável (setd), vejamos: set getd("$variavel_referencia"), 1;set @i, getd($digimon);  
    Esse exemplo criará uma variável de acordo com o nome do jogador atachado: set "@var" + strcharinfo(0), 135;   Se o nome do jogador for "Mijo" então o nome da variável será @varmijo, certo?   Para checar se o jogador tem uma variável como essa, use o getd, veja: if (getd("@var"+strcharinfo(0)) > 0) { set Zeny, Zeny + getd("@var"+strcharinfo(0)); }end;   Dará o Zeny de acordo com o valor da variável acima, no caso, 135.   Um outro exemplo:  OnHour22:for (set @i,0; @i <= getarraysize($users_on); set @i,@i+1) { setd $users_on[@i]+"_var, 1;}   Onde $users_on é definido quando o jogador loga com o getcharid(0). A variável seria: 00000000_var   Ou seja, poderiamos saber o valor que um char específico tem nessa variável: if (00000000_var == 1) mes "O jogador de id 00000000 tem a var como 1";  
    Se fosse um jogador atachado com o strcharinfo como no exemplo mais acima, dariamos para fazer o if de outra maneira, mas estamos falando de ID da conta, e não de nome de char, algo totalmente diferente.   Mais continuando no if feito acima, poderiamos definir outro valor para ela: set 00000000_var,1;   Daria no mesmo que utilizar o Getd ou Setd.   Iremos pegar essa variável quando o jogador logar novamente: OnPcLoginEvent:if(getd(getcharid(0)+"_var") == 1)) //Quer dizer que o jogador estava on na hora =){ dispbottom "Parabéns!"; getitem 501,1; setd $users_on[@i]+"_var,0;}end;   É simples, setd define uma variável customizada e getd retorna o valor dessa variável customizada.   Simples, e novamente, um abraço!   Wolf.
  24. Upvote
    Senos got a reaction from Niunzin in Script Intermediário (Aula 3)   
    Script Intermediário! - 3
    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/  
    Como prometido, estarei começando com a terceira aula de script (Menu dinâmico e suas teorias).
     
    Primeiro assunto da aula:
    - Menus dinâmicos e suas teorias
     
    Menus dinâmicos são essenciais hoje em dia justamente pelo fato da necessidade de otimizações e dinâmismo que podemos dar aos scripts. 
    No meu método de seleção e aprendizado, utilizaremos uma string que será como se você estivesse digitando no select suas opções na hora, facilitando muito. Claro, existem diversas formas de fazer um menu dinâmico, porém essa é a mais simples e prática utilizada hoje em dia.   Então partiremos para criar um menu. Para começar, precisamos ter uma variável do tipo STRING, na qual guardaremos as intruções do select. //Faremos ela sem valor nenhum inicialmente, para deopis fazer um loop e adicionar as funções.//Observem que usei uma variável temporária do npc para essa função (mais simples e rápido)set .@cmd$,"";   Agora precisamos e setaremos uma lista de opções que serão usadas no seu menu (pode ser feito antes do .@cmd$, caso você queira): setarray .@opt$[0],"Comprar","Vender","Trocar";  
    Nunca coloque opção de cancelar nessa array, ela será posta mais tarde. Então iniciamos nosso loop que fará a linha de comando, vejamos: for(set @i,0; @i <= getarraysize(.@opt$); set @i,@i+1) set .@cmd$, .@cmd$+.@opt$[@i] + ":";  
    Entendendo: .@cmd$+.@opt$[@i]+":"  
    .@cmd$ = Prepara a variável que contém a linha do comando atual para adição de mais um item no menu. .@opt$[@i] = É a opção a ser adicionada na linha de comando. ":" = É o que separa as opções em um select. (Como qualquer select sem dinamização, só para exemplo).   Agora para finalizar, adicionaremos por último: set .@cmd$, .@cmd$+"Fechar"; //Esse fechar é a última opção de nosso (seu) menu.  
    Finalmente colocamos o select que usará a linha de comando, fazendo o código ficar desta maneira:
    set .@cmd$,"";setarray .@opt$[0],"Comprar","Vender","Trocar";for(set @i,0; @i <= getarraysize(.@opt$); set @i,@i+1) set .@cmd$, .@cmd$+.@opt$[@i] + ":";set .@cmd$, .@cmd$+"Fechar";select(.@cmd$);  
    Para utilizar o snippet utilize uma forma normal, com a variável retornada por todo tipo de menu, que é a @menu.   Para lembrarmos, veja um exemplo simples: select("Oi":"Tchau");if (@menu == 1) mes "Oi";if (@menu == 2) mes "Tchau";  
    É simplesmente isso, o uso é bem simples como o tutorial, em caso de dúvidas, mande uma PM que ajudarei com toda certeza!

    Um abraço, Wolf.
  25. 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.
×
×
  • Create New...

Important Information

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