Jump to content

Edgar

Members
  • Content Count

    33
  • Joined

  • Last visited


Reputation Activity

  1. Upvote
    Edgar 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
  2. Upvote
    Edgar reacted to keough in Flux addon: Facebook Share for points   
    Hello Hercules community!
     
    Maybe some of you are interested with this idea, well the idea was like a vote for points.
    But instead of choosing a voting site buttons for points, players will click a share button with a daily basis duration just like the vote for points system.
     
    For example your server have a event or promo you can use the facebook share for the event and the players will have points in-game just like the vote for points.
    but the link that is shared must be automatically shared in public status so some of their mutual friends will saw the shared links or photo promotion for your server and more players will come to your server!
     
    I hope this idea will implemented.
     
    btw the idea was like this, http://apps.baphomet.in.th/reward and i think its a great addons if implemented, it can help server population even more.
     
    What do you think guys? I do not know how to do it but maybe someone in this community can
     
    Hoping for a reply
  3. Upvote
    Edgar reacted to AnnieRuru in Vendor Control (rewrite)   
    I think I'm going to start a "New Script Festival" LOL
     
    I have so many scripts in my hard-disk ...
    so I just have to post them 1 at a time ... everyday ! -> keep my fan base happy
  4. Upvote
    Edgar reacted to Yommy in kRO Introduces Pet Evolution System, Roulette Game,RoDex   
    the menu buttons changed officially,
    i'm thinking about starting a service to sell client package setups, using the latest clients
  5. Upvote
    Edgar reacted to jaBote in ¿Como crear un item que llame al servicio de warper evolution?   
    Añade una etiqueta al NPC Warper Evolution que ejecute para cuando hablas normalmente (generalmente en la línea 2 del NPC, antes de que empiece el código que se ejecuta cuando le hablas). Añade por ejemplo la etiqueta OnNokiaCall: (los dos puntos incluidos).
     
    Luego utiliza el script command doevent.
    doevent "<NPC object name>::<event label>";
  6. Upvote
    Edgar got a reaction from Kuroko Sempai in Pedido Material cliente   
    Mira, todo junto me es complicado subirlo. Pero te puedo pasar de momento la carpeta Tools, quizás pueda subir lo demás en algún momento del fin de semana.

    https://mega.co.nz/#!jUZ3XR7L!S_Ncoti1qZzOtDu6EoBvGUTTOrphZUFOKT3glFoEeM0
     
     
    ----
     
     
    Bueno, al final fue mas rapido la subida de lo que esperaba.

    https://mega.co.nz/#!2ZRzzQQS!EREsbQPzXLgu2kFRVlQ_w8_2KcQGa-_0qShSBvjYlJE
    2013-12-23_Client_Side_Files

    El 2013-12-23Ragexe_Full_Client Me sería imposible. 
  7. Upvote
    Edgar reacted to kisuka in 2014 Halloween Event   
    Attached are the client additions / translations for the soon to be released official 2014 halloween event script.
     
    The lua files and questid2display.txt need to be merged with your own client files. In this archive they only contain the additions. They will not work if you just drop them into your client as it'll get rid of all the other content, as they weren't included.
     
    Server side content will be released into the repo once we get some item bonus figured out for the candies.
    2014 Halloween Event - Client Files.rar
  8. Upvote
    Edgar reacted to GmOcean in Item Search   
    Currently, no one knows how to change that. It's a client limitation until we can find the proper hex code and make a diff for it. For now people will just have to drag the corner of the window to increase it's size or maximize it :/
  9. Upvote
    Edgar reacted to tr0n_ in tr0n's Questboard [1.5.4]   
    Yea! Annies missionboard is a great script. Mine is a bit different because it uses script based quests instead of sql based quests.
    Soon i will update it again to release a new feature "party support". That means you can do quests with your party!
    Btw. everyone has my script already Just check: npc/custom/quests/questboard.txt
  10. Upvote
    Edgar reacted to Ai4rei in GRF Diet Plan, v1.0.0.0 - last updated 2014/10/05   
    GRF Diet Plan


    About
    This tool is a feature test of RO Patcher Lite's GRF library. It reduces GRF archive size by eliminating duplicated data, with non-shared palettes giving the best ratios. No client modifications are needed. See readme.txt for more details.

    Known Issues
    Using the "use best compression" option (off by default) might cause the client being unable to read certain files or degrade performance.

    Download & Website
    http://nn.ai4rei.net/dev/rotools/

    License

    This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
  11. Upvote
    Edgar reacted to Dastgir in Dastgir's Services   
    Hello Hercules Community,

    I am offering my Services to you @ some expense of money.

    Works for Emulator: Hercules/rAthena/Others(if any)
    Services:
    Scripting. (Min Price:5$ ) Source Modification(/Addition).(Min Price: 5$) Converting to/Creating a Plugin[Hercules Specific].(Min Price: 5$) Migrating Your Server. (Min Price: 10$) Adding Custom Items/Maps/Mobs. (Min Price: 5$) Creating/Adding New Skills. (Min Price: 10$) Changing of Emulator (Min Price: 10$) ClientSide Things. (Min Price: 5$) Fixing Errors. (Min Price: 5$) Script Review. Consulting And Anything else, that you want, just drop me a PM
    Maximum Price: Depends on Complexity of the Work
    What Else:
    Free Support for Service bought from me.

    Contact Info:
    Post Here Via PM Payment Methods:
    PayPal Only PM me if you want any other payment method, and I might check If I can have it.

    Status: AVAILABLE
  12. Upvote
    Edgar reacted to AnnieRuru in loadmapevent help.   
    I noticed at the beginning of the script, there are *mes script commands
    so I guess you didn't post the duplicate npc part
     
    of course it will spam the dialog because you duplicated the OnPCLoadMapEvent labels multiple times
     
    change this
    - script Buff -1,{ mes "hi"; close;OnPCLoadMapEvent: buffing.... end;}prontera,x,y,z duplicate(Buff) Buff#1 100izlude,x,y,z duplicate(Buff) Buff#2 100geffen,x,y,z duplicate(Buff) Buff#3 100into this- script Buff -1,{ mes "hi"; close;}- script Buff#main -1,{OnPCLoadMapEvent: buffing.... end;}prontera,x,y,z duplicate(Buff) Buff#1 100izlude,x,y,z duplicate(Buff) Buff#2 100geffen,x,y,z duplicate(Buff) Buff#3 100so the OnPCLoadMapEvent doesn't get duplicated
  13. Upvote
    Edgar reacted to AnnieRuru in [request] @maintenance Command?   
    of course everything that I write will be free
    .
    .
    https://github.com/HerculesWS/Hercules/blob/master/src/map/clif.c#L676clif->authfail_fd( sd->fd, 1 );
    will display 'Server Closed (1)'
    note that the packet header is 0x81
     
    if you change 'min_group_id_to_connect', you'll get this
    https://github.com/HerculesWS/Hercules/blob/master/src/login/login.c#L1107
    the packet header is also 0x81
     
    somehow *athena core developer dunno who, doesn't make use of clif->authfail_fd function
     
    I know about this topic
    http://herc.ws/board/topic/1286-requesting-maintenance-plugin/?p=10266
    where people says plugin not supported, because they edit the login_auth_ok function inside srcloginlogin.c
    but I found out HPMHooking allow to hook pc->authok inside srcmappc.c
    so mine can support plugin ... well in theory
     
    I'm about 20% done now ...
    now writing the sql table to make it persist after server shutdown ... because it seems roservice they have that
  14. Upvote
    Edgar reacted to karazu in Hercules 1st 2014 MegaPatch   
    Every time someone bumped this Thread, I always got a HEART ATTACK


    IND PLEASE
  15. Upvote
    Edgar reacted to Olrox in WoW Domination Battleground (Olrox is not invited)   
    I'm lazy to do it, so thanks for not inviting
     
    Edit: And btw, If I have to add something: I've done other kind of releases or contributions more than just a BG map all this time so far. Everyone already knows that.
  16. Upvote
    Edgar reacted to evilpuncker in About 1 Per Mac IP except vending or @AT   
    change this part .@samemac >= 1
  17. Upvote
    Edgar reacted to Tragedy in [SRC] Love Benediction (Skill Custom)   
    Veo que hay poca actividad de aportes en el foro de español, así que poco a poco iré posteando una que otra cosa que he desarrollado. Esta fue una sencilla skill custom que desarrollé hace unos 3/4 años para un servidor viejo que tuve y mi primer aporte en DivineRO.
     
    Bueno aquí les cuento un poco como surgió la idea.
     
    Varias de las parejas dentro de un servidor el cual trabajé hace años me sugirieron    
      Segun ellos por que les encanta levear juntos en pareja etc y les caeria bien un "beneficio"... Dije ok, me pareció interesante la idea y bueno... ¿Por que no hacerla?   (Disculpen el nombre de la Skill, mi imaginación en ese tipo de cosas es PÉSIMA)   No es la gran cosa, asi que hay va:   En Unit.C   Buscar   case WE_MALE:case WE_FEMALE:   
      Y añadir Abajo   case F_BENEDICTION:    En Skill.C   Buscamos       case WE_FEMALE:        {            int sp_rate=(skilllv <= 0)? 0:skill_db[skillid].sp_rate[skilllv-1];            int gain_sp=tstatus->max_sp*abs(sp_rate)/100;// The earned is the same % of the target SP than it costed the caster. [Skotlex]            clif_skill_nodamage(src,bl,skillid,status_heal(bl, 0, gain_sp, 0),1);        }        break;   
      Y añadimos de bajo    
        case F_BENEDICTION:        {                                                            //Indicamos que dopa saldre de forma random, lvl de la Skill y duraccion de la Skill (El dope solo durara 1 minuto)            int bene = rand()%5;                 switch (bene)                {                    case 0: // Bless                    sc_start(bl,SC_BLESSING,100,10,60000);                    break;                                      case 1: // Agi                    sc_start(bl,SC_INCREASEAGI,100,10,60000);                    break;                                      case 2: // Assump                    sc_start(bl,SC_ASSUMPTIO,100,10,60000);                    break;                                      case 3: // Angelus                    sc_start(bl,SC_ANGELUS,100,10,60000);                    break;                    case 4: // Wind Walk                    sc_start(bl,SC_WINDWALK,100,10,60000);                    break;                                                     }                                    }            clif_specialeffect(bl, 363, AREA);   // Indicamos el efecto visual de la Skill (Chequen en la documentación de Eathena, el archivoeffect_list.txt para mas efectos            clif_emotion(sd,3); // Indicamos el emoticon /lv e_lv (Chequen su const.txt en su carpeta DB)            break;      En su Skill.H    
    EL_ROCK_CRUSHER_ATK,     EL_STONE_RAIN,   
     
      Y añadimos abajo:    
        //Custom    F_BENEDICTION = 990,   
        Bien ya acabamos la parte del SRC   Seguimos con lo demas   item_db.txt   Modificamos:    
    2634,Bridegroom_Ring,Wedding Ring,5,0,,0,,0,,0,0xFFFFFFFF,7,1,136,,0,0,0,{ skill "WE_MALE",1; skill "WE_FEMALE",1; skill "WE_CALLPARTNER",1; },{},{}2635,Bride_Ring,Wedding Ring,5,0,,0,,0,,0,0xFFFFFFFF,7,0,136,,0,0,0,{ skill "WE_MALE",1; skill "WE_FEMALE",1; skill "WE_CALLPARTNER",1; },{},{}   
      Por:   2634,Bridegroom_Ring,Wedding Ring,5,0,,0,,0,,0,0xFFFFFFFF,7,1,136,,0,0,0,{ skill "WE_MALE",1; skill "WE_FEMALE",1; skill "WE_CALLPARTNER",1; skill "F_BENEDICTION",1; },{},{}2635,Bride_Ring,Wedding Ring,5,0,,0,,0,,0,0xFFFFFFFF,7,0,136,,0,0,0,{ skill "WE_MALE",1; skill "WE_FEMALE",1; skill "WE_CALLPARTNER",1; skill "F_BENEDICTION",1; },{},{}   
      En Skill_db.txt    
    10014,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0,    GD_DEVELOPMENT,Permanent Development //10015,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0,    GD_ITEMEMERGENCYCALL,Unknown Skill    Y añadimos abajo    
    990,9,6,4,0,0x1,0,1,1,yes,0,0x4,0,none,0,    F_BENEDICTION,Love Benediction   
      En Skill_cast_db.txt   Buscamos    
    //-- GD_EMERGENCYCALL 10013,5000,0,0,0,300000 //=   
      Y añadimos de bajo    
    +//-- F_Benediction990,3000,60000,0,0,0   
      Tiene un delay de 1 minuto, para que sea una dopa cada vez que hagan la Skill, ya los tiempos dependen de ustedes    
     
     
    Si tienen algún pedido o idea que quieran que desarrolle, no duden en contactarme. Estaré activo en este foro para darle un poco de vida a la sección en español.
     
    En la semana añadiré un paquete de plugins de skills elementales custom, junto con esta, así se daran idea de como hacer un plugin.
  18. Upvote
    Edgar reacted to Patskie in Redeemer NPC / Coupon NPC / Promotional NPC   
    /*DROP TABLE IF EXISTS `reward_codes`;CREATE TABLE IF NOT EXISTS `reward_codes` ( `code` VARCHAR(10) NOT NULL DEFAULT '', `nameid` INT(11) UNSIGNED NOT NULL DEFAULT '0', `item_name` VARCHAR(45) NOT NULL DEFAULT '', `amount` SMALLINT(6) UNSIGNED NOT NULL DEFAULT '0', `time_created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' PRIMARY KEY (`code`)) ENGINE = MYISAM;DROP TABLE IF EXISTS `rewardlogs`;CREATE TABLE `rewardlogs` ( `account_id` INT( 10 ) NOT NULL, `code` VARCHAR( 10 ) NOT NULL, `redeem_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00') ENGINE = MyISAM;*/- script promoclaim -1,{OnInit: bindatcmd "claim",strnpcinfo(3)+"::OnClaim"; bindatcmd "code",strnpcinfo(3)+"::OnEditCode"; end; OnClaim: // if ( getgmlevel() ) end; mes "^FF0000 Enter a new promotional code."; input .@pc$; close2; query_sql "SELECT `nameid`, `amount` FROM `reward_codes` WHERE `code` = '" + escape_sql(.@pc$) + "'", .@item, .@amt; if ( !.@item ) dispbottom "Either invalid code or the code is already claimed by other people"; else { getitem .@item, .@amt; dispbottom "Promotional code successfully redeemed."; query_sql "DELETE FROM `reward_codes` WHERE `code` = '" + escape_sql(.@pc$) + "'"; query_logsql "INSERT INTO `rewardlogs` VALUES ( '" + getcharid(3) + "', '" + escape_sql(.@pc$) + "', NOW() )"; } end; OnEditCode: if ( getgmlevel() < 99 ) end; set .@choice$, "Setup a new promotional code:View existing codes:Delete exisiting codes:Cancel"; setarray .@length, 4,10; // <min>,<max> switch ( select( .@choice$ ) ) { case 1: input .@pcode$; if ( getstrlen( .@pcode$ ) < .@length[0] || getstrlen( .@pcode$ ) > .@length[1] ) { dispbottom "Codes must not be less than " +.@length[0]+ " and must be greater than " +.@length[1]+ "."; end; } mes "You have entered ^FF0000"+.@pcode$+"^000000 as the code."; mes "Are you sure?"; if ( select("Yes:No, thanks") - 1 ) end; query_sql "SELECT `code` FROM `reward_codes` WHERE `code` = '" + escape_sql(.@pcode$) + "'", .@pcode_exists; if ( .@pcode_exists ) { dispbottom "Sorry, that code already exist."; end; } mes "Please set a reward for the players who has entered the code."; input .@reward; next; if ( !.@reward || getitemname(.@reward) == "null" ) { dispbottom "Sorry, that is an invalid item id."; end; } set .@iname$, getitemname(.@reward); mes "Item number ^FF0000"+.@reward+"^000000"; mes "is equivalent to ^FF0000"+.@iname$+"^000000."; mes "Are you sure?"; next; if ( select("Yes:No, thanks") - 1 ) end; mes "How many ^FF0000"+.@iname$+"^000000.?"; input .@amount; next; if ( !.@amount ) { dispbottom "Sorry, that is an invalid amount number."; end; } mes "Are you sure?"; next; if ( select("Yes:No, thanks") - 1 ) end; query_sql "INSERT INTO `reward_codes` VALUES ( '" + escape_sql(.@pcode$) + "', '" + .@reward + "', '" + escape_sql(.@iname$) + "', '" + .@amount + "', NOW() )"; dispbottom "Done creating code!"; break; case 2: set .@nb, query_sql("SELECT code, item_name, amount FROM `reward_codes` ORDER BY time_created DESC LIMIT 20", .@code$, .@nid$, .@amount); if ( !.@nb ) { dispbottom "No exisiting codes."; end; } dispbottom "============================================="; dispbottom "============== EXISITING CODES =============="; dispbottom "============================================="; for(set .@i,0; .@i < .@nb; set .@i,.@i+1) dispbottom ""+.@code$[.@i]+" ( Reward: "+.@amount[.@i]+" "+.@nid$[.@i]+" ) "; dispbottom "============================================="; break; case 3: input .@dcode$; query_sql "SELECT `code` FROM `reward_codes` WHERE `code` = '" + escape_sql(.@dcode$) + "'", .@dcode_exists; if ( !.@dcode_exists ) { dispbottom "Promotional code not found."; end; } mes "Would you like to delete that code?"; next; if ( select("Yes:No, thanks") - 1 ) end; query_sql "DELETE FROM `reward_codes` WHERE `code` = '" + escape_sql(.@dcode$) + "'"; break; case 4: break; default: break; } close;}
  19. Upvote
    Edgar reacted to AnnieRuru in Redeemer NPC / Coupon NPC / Promotional NPC   
    perfectly built script, I can only see 1 bug and 2 improvements
     
    1.
    bindatcmd "claim",strnpcinfo(3)+"::OnClaim"; bindatcmd "code",strnpcinfo(3)+"::OnEditCode";when you write an atcommand that player can usealways set charcommand level to 99 or 100
     
    its simple to reproduce
    when pvp/gvg, type '#claim <player name that you hated>' and will send a chat box on the player,
    cause him to have a moment of pause because need to type something
    yet again ... this kind of knowledge can only acquire when you have work on a live server =/
     
    2.
    so change into like this
    bindatcmd "claim",strnpcinfo(3)+"::OnClaim", 0, 100; bindatcmd "code",strnpcinfo(3)+"::OnEditCode", 99, 100;so you don't have to ( getgmlevel() < 99 ) end; 
    3.
    query_sql "SELECT `nameid`, `amount` FROM `reward_codes` WHERE `code` = '" + escape_sql(.@pc$) + "'", .@item, .@amt; if ( !.@item ) dispbottom "Either invalid code or the code is already claimed by other people";can be simplify as if ( !query_sql( "SELECT `nameid`, `amount` FROM `reward_codes` WHERE `code` = '" + escape_sql(.@pc$) + "'", .@item, .@amt ) ) dispbottom "Either invalid code or the code is already claimed by other people";
  20. Upvote
    Edgar reacted to AnnieRuru in BG queue announcement   
    when you talk about bg_queue
    it should be this
     

     
    so note, this battleground system runs real time
    the queue is process behind npc script, so there is nothing we can do when somebody starts registering
    the script function only start to execute when the queue is full
     
    go to confbattleground.conf
    /* feature is not complete */ feature_off: falsechange to false, then find KVM (lvl80+), replace with this },{ name: "KVM (Level 80 and up)" //must match the name in client files event: "bg_pvp::OnStart" minLevel: 1 maxLevel: 150 reward: { // useless ! should be done by npc scripting win: 0 loss: 0 draw: 0 } minPlayers: 2 /* minimum amount of players to start */ maxPlayers: 30 /* maximum amount of players. NOTE: I wonder why they set to 60 when MAX_BG_MEMBERS is only 30 */ minTeamPlayers: 999 /* can I off this ? this one is bugged */ delay_var: "BG_PVP_Tick" /* char variable name that will store the delay for this match */ maxDuration: 1 /* maximum duration in minutes ... this one also bugged */ fillDuration: 20 /* time in seconds to wait for more applications when minimum has been reached */ pGameDuration: 20 /* time to wait for players to confirm their attendence after queueing process has finished */ },{npc scripthttp://upaste.me/d66e107963faa3a04
    oh and my source modification of course
    http://herc.ws/board/topic/4570-battleground-system-without-waitingroom/
     
    so how to make this work
     
    1st, click on the [battle] button just below your character info
    2nd, select "KVM (Level 80 and up)", then click individual
    3rd, dual client another character, then do the same
     
    4th, go back the 1st character, this window should pop up on 1st character, click [Close]

     
    5th wait about 20 seconds, this window should pop up on both characters, both characters click [OK]

     
    .... the rest self-explain, read the script yourself
     
    to announce that the battleground started,
    find OnStart: label, add the announcement below by yourself
     
     
    EDIT:
    for those who are testing right now, yes, now you know how bug the system is
  21. Upvote
    Edgar reacted to Kichi in NDG Protection   
    No Delay Grf Protection
     
     
     
    NDG Protection is a src modification to make sure NDG,speed hack, WPE Users still follow the rules.
     
    History:
    This is a simple code, which we have made since long to minimize the NDG User.
    The first way to solve NDG, we add a cooldown for skills that dosn't has a fixed cooldown (Sonic Blow, Cross Impact, etc).
    But the player doesn't allowed to do double cast.
    Finaly we made this code that minimize the NDG users, but still keep the original feature that is double cast for some skills (Sonic Blow, Cross Impact, etc).

    Implementation:
    Download 2 files above Use manual way to diff (first file) the core and recompile. Copy Paste the second file to "conf/import/" And you will see the effect

     
     
    Feature:
    -The user still able to use double SB / CI / etc.
    -You may switch on and off.
    -Very simple
     
     
    Any comments, suggestions, even critism in order to make this feature better is opened.
    Thank You.
     
     
    Note:
     I've been testing NoDelayGrf on augst 2013 and doesn't work,
     i've tested this using WPE
     i've got the numbers from comparing with and without *cheat
     
     
    DOWNLOAD
    src:
    Herc - NDG Protection.diff
    import/
    battle_conf.txt
     
×
×
  • Create New...

Important Information

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