Edgar
-
Content Count
33 -
Joined
-
Last visited
Reputation Activity
-
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
-
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
-
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
-
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
-
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>"; -
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.
-
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
-
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 :/
-
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
-
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.
-
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
-
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 -
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
-
Edgar reacted to karazu in Hercules 1st 2014 MegaPatch
Every time someone bumped this Thread, I always got a HEART ATTACK
IND PLEASE
-
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.
-
Edgar reacted to evilpuncker in About 1 Per Mac IP except vending or @AT
change this part .@samemac >= 1
-
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.
-
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;} -
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"; -
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
-
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