Jump to content

jaBote

Community Contributors
  • Content Count

    2037
  • Joined

  • Last visited

  • Days Won

    43

Everything posted by jaBote

  1. Main problem about this, is that I think everybody will try to defend their current scripting style more than reach to an agreement
  2. I like the standards, but maybe this could break that: announce "this is such a great and big announcement that can maybe be inside of an official script, how will you cut it out?",bc_all; And only thing I don't like is that I'd prefer to see this on an if-else statement because I feel it's more clear: if (this) {}else if (that) {}else {} P.S.: I can't seem to download the alberta text?
  3. It could be a bad connection on your host machine or even lack of resources, which usually happens on oversold machines or that your neighbouring clients are using resource-intensive web pages.
  4. Change the OnClockXXXX: to OnMinute00: and OnMinute30:
  5. Your player name's has a ' inbetween their nickname, so it breaks the text part. Examples: (see the coloring on the text) Broken string: 'Wolf O'Donnell'; Correct string: 'Wolf O'Donnell'; I've escaped the ' after the O so that it's taken as a literal ' on the string and thus will not be taken as a string end with a weird extension the MySQL engine won't know how to parse making it broken. More (extensive) info on this: http://php.net/mysqli_real_escape_string But you can't manually escape the char names since you don't know what they can contain, so you can use the escape_sql script command for that, which will handle it for you without any added problems other than editing your current SQL statement. P.S.: Nope, you can't unescape them without doing some minor string magic yourself .
  6. Yeah! Take a look at this on the end of the script: // Normal mob IDs setarray .normal[0], 1002, 1031, 1113, 1242, 1613, 1784, 1388, 1582, 1120, 1062, 1090, 1096; // Normal mob amounts setarray .n_mobs[0], 300, 300, 300, 300, 300, 300, 10, 40, 40, 300, 40, 40; // Prized mob IDs setarray .prized[0], 1002, 1031, 1113, 1242, 1613, 1784, 1582, 1120, 1062, 1096; // Prized mob amounts setarray .p_mobs[0], 3, 2, 3, 3, 3, 3, 1, 1, 3, 1; You can add or remove monsters IDs and amount of monsters (priced or not) that will be summoned by the event.
  7. You haven't separed the NPC header in tabs. Correct separation is (change any <TAB> to a tabulation space): -<TAB>script<TAB>poringbind<TAB>-1,{
  8. jaBote

    [HELP]

    There's no longer a packet_db.txt file on Hercules. It's been substituted to a more efficient definition in src/common/mmo.h, lines 50 to 59. Simply put in your client version (aaaammdd) and tell the server if you're using a ragexe or ragexeRE server and recompile!
  9. What do you see missing/failing, apart from the start labels on the WoE:SE castles? These labels can be repaired by seeing their current ones on the npc/guild2 folder and editing them as you want.
  10. Can't detailedly do this at the moment, but should be enough if you make a whitelist of NPCs you want to go to the arena and use the setnpcdisplay script command. Sample: - script voidscript -1,{end;}arena,100,100,0 duplicate(voidscript) #spectator0 -1arena,101,100,0 duplicate(voidscript) #spectator1 -1arena,102,100,0 duplicate(voidscript) #spectator2 -1arena,103,100,0 duplicate(voidscript) #spectator3 -1- script rotatespectators -1,{OnInit: setarray .safeids[0],46,47,48,49,50,51,52,53,54,55,56,57,58,59,60; .spectators = 4; end;OnChangeSpectators: for (.@i = 0; .@i < .spectators; .@i++){ if (setnpcdisplay("#spectator0" + .@i, .safeids[rand(getarraysize(.safeids))])) { // Returns 1 if there are problems debugmes "SOMETHING WENT WRONG WITH NPC "#spectator0" + .@i + " "!"; // Note it } } end;} Or if you think you won't be having problems with your spectator NPCs, you can simplify the latter one if you trust your setnpcdisplays will work like this: - script rotatespectators -1,{OnInit: setarray .safeids[0],46,47,48,49,50,51,52,53,54,55,56,57,58,59,60; .spectators = 4; end;OnChangeSpectators: for (.@i = 0; .@i < .spectators; .@i++){ setnpcdisplay("#spectator0" + .@i, .safeids[rand(getarraysize(.safeids))]); } end;} You can see NPC sprite IDs at http://nn.nachtwolke.com/dev/npclist/ (beware some aren't available on a regular data folder installation). It's not a complete response, but I'm sure you'll at least get the gist of it.
  11. It was an approach (by MIA GreenBox, mainly) aimed to have multiple interconnected zone servers. Think of a zone server as a map server in which you just rely to serve some maps, or two parallel dimensions on a same server much like professional game services.
  12. Do you have any warning or error on boot up or when reloading your scripts? According to online script checkers for Hercules, it works OK.
  13. You can give a try to this untested and possibly insecure script (don't know if it is or not, I hope not): - script asdf -1,{OnWhisperGlobal: atcommand "@addperm can_trade"; openstorage; atcommand "@rmvperm can_trade"; end;} Since the can_trade permission is only checked upon opening the storage, not when you try to move items from/to it.
  14. Just add the whole switch of the NPC to your own inside the OnTouch event, then change all the announces to npctalk and remove the extra argument of the announces since npctalk doesn't need it. You should be able to do the work by yourself with this advice. P.S.: You can usually search and replace on a text editor with ctrl + H
  15. I'm interested on making or seeing this one made. Shamelessly bumping since I don't have time to make this right now. P.S.: It'd be nice to add a GM menu in which you add or remove quests, but sadly most of them will be about killing monsters, giving some items or visiting places with the help of other NPCs.
  16. Hola. He replicado este mismo tema en el foro inglés de Script Support debido a que no he podido encontrar el problema del script (y ayuda menos aún que el motor MySQL de mi ordenador esté roto sin posibilidad de arreglarlo a menos que formatee). A ver si los cracks del scripting de ese foro pueden ofrecer un poco de mejor visión sobre el asunto . ¡Siento no poder ser de ayuda en este caso! Enlace al tema de soporte en inglés: http://herc.ws/board/topic/4937-making-ivion-mob-invasion-script-compatible-with-hercules/ Si no te entiendes con el inglés o no quieres usarlo por alguna razón, trataré de mantenerte informado de cualquier ayuda notable que puedan ofrecer en ese tema . Un saludo.
  17. Hello. This topic is forwarded from this Spanish Support topic, on its script section: compatibilizar invacion de Ivion User says this script won't work in Hercules because when an invasion starts, it instantly ends. I haven't been able to spot the issue on its code (couldn't test since my local MySQL engine is broken for good) and it parses OK according to Haru's script checker. Script is quite old (ancient I'd say ) and obfuscated, but to my knowledge it's allowed to be redistributed and edited without any problems. Here's a copy of the script: //// [========================================================]// [=========== The Invasor ===========]// [========================================================]// [ Version 8 ]// [========================================================]// [ Original script by: Ivion ]// [========================================================]// [ Description: ]// [--------------------------------------------------------]// [ ]// [ - Automatic invasion events. ]// [ - 24 randomly selected cities. ]// [ - 15 different types of invasion. ]// [ - Invasion events are divided into 3 difficulty stages.]// [ - GM Control Panel whispering to NPC:invasor. ]// [========================================================]// [ Changelog: (5 last updates) ]// [--------------------------------------------------------]// [ ]// [ v4: [Ivion] ]// [ - Nuevos mobs balanceados, añadidos a la db. ]// [ - 2 nuevos tipos de invasiones. ]// [ - Ahora los mobs dropean items. ]// [ - Recompensas y penalizaciones globales. ]// [ - Acceso ingame mediante OnWhisperGlobal. ]// [ - Nuevas opciones de configuración. ]// [ - Reescrito casi todo el código. ]// [ ]// [ v5: [Ivion] ]// [ - Varios bugfixes. ]// [ - Optimización del script. ]// [ - Añadido mid_camp. ]// [ - Nuevos mobs sin tanta db. ]// [ - Nuevos bosses. ]// [ - Nuevas invasiones: Ice, Nature, Dragon, Kaos y ]// [ Takeshi. ]// [ - Incremento de rates del servidor a +20%. ]// [ - Retirado el sistema de penalizaciones. ]// [ - Los spawns no disminuirán al matar los bosses. ]// [ - Sistema para Save Point alternativo. ]// [ ]// [ v5.1: [Ivion] ]// [ - Bugfix: Corregido un pequeño error en mob_db2 que ]// [ producía errores en el map-server. ]// [ ]// [ v6: [Ivion] ]// [ - Translated into english. ]// [ - Added new 13.2 episode cities. ]// [ - Global delayed announcements system. ]// [ - Rates increment won't affect other possible bonnuses ]// [ from other scripts. ]// [ - Bugfix: Mapflags used while the invasion event will ]// [ be cleared according to their inicial state. ]// [ - Some mobs has been replaced. ]// [ - Bugfix: Removed Ghoul and Angeling mobs from the 3rd ]// [ stage of the Undead invasion. ]// [ - Some bosses has been replaced. ]// [ - Some balance adjustments to the stats of the bosses. ]// [ - Bugfix: Some bosses had range2 = 0. ]// [ - The control panel won't be displayed to ]// [ multiple gms at once. ]// [ - Mobs and bosses will drop Poring Coins. ]// [ ]// [ v7: [Ivion] ]// [ - Bugfix: Incorrect map cells in Amatsu and Juno. ]// [ - Added teleport skill to the bosses. ]// [ - Updated the skills of the 13.1 monsters. ]// [ ]// [ v8: [Ivion] ]// [ - The init timer won't reset when reloading scripts. ]// [ - Added some information about the invasion progress in]// [ the GMs Control Panel. ]// [========================================================]// [ http://www.eathena.ws/board/index.php?showtopic=224056 ]// [========================================================]- script invasor -1,{OnInit:// [========================================================]// [ Configuration: ]// [--------------------------------------------------------] set .t1,2*24; // Minimum time to activate a new invasion event. (h) set .t2,4*24; // Maximum time to activate a new invasion event. (h) set .t3,24*120; // Maximum duration of the invasion event. (min) set .r1,50000; // Mob rate. (%) set .pci,8905; // Item reward dropped by mobs and bosses. (Default = Poring Coin) set .pcr1,1; // Rate of item rewards dropped by mobs. (0 = off | %) set .pcr2,10; // Rate of item rewards dropped by bosses. (0 = off | %) // After successfully completing the invasion, the experience rates will be increased for a time. set .t4,60; // Duration of the experience event. (0 = off | min) set .r2,30; // Experience rates increment. (0 = off | %) set .gm,60; // GM level required to access the Control Panel whispering to NPC:invasor. // Alternative Save Point: // If a player had saved in the map of the current invasion event, his respawn point will be changed to this one. set .s$,"prontera"; // Map. set .sx,156; // x. set .sy,161; // y. // Cities: // getarg(0): Name. // getarg(1): Map. // getarg(2): Intensity. (0 = off | Intensity) //callsub Onc0,"Alberta","alberta",11; callsub Onc0,"Al De Baran","aldebaran",14; callsub Onc0,"Amatsu","amatsu",18; callsub Onc0,"Ayothaya","ayothaya",8; callsub Onc0,"Comodo","comodo",22; callsub Onc0,"Einbech","einbech",11; callsub Onc0,"Einbroch","einbroch",22; callsub Onc0,"Geffen","geffen",10; callsub Onc0,"Gonryun","gonryun",14; callsub Onc0,"Hugel","hugel",9; callsub Onc0,"Izlude","izlude",5; callsub Onc0,"Jawaii","jawaii",0; // 7 callsub Onc0,"Juno","yuno",30; callsub Onc0,"Lighthalzen","lighthalzen",24; callsub Onc0,"Louyang","louyang",27; callsub Onc0,"Lutie","xmas",20; callsub Onc0,"Manuk","manuk",8; callsub Onc0,"Midgarts Expedition Camp","mid_camp",13; callsub Onc0,"Morroc","morocc",25; callsub Onc0,"Moscovia","moscovia",6; callsub Onc0,"Niflheim","niflheim",0; // 20 callsub Onc0,"Payon","payon",19; callsub Onc0,"Prontera","prontera",0; // 30 callsub Onc0,"Rachel","rachel",18; callsub Onc0,"Splendide","splendide",29; callsub Onc0,"Umbala","umbala",4; callsub Onc0,"Veins","veins",20; // Invasion types: // getarg(0): Name. // getarg(1 .. 9): Mobs. // getarg(10 .. 12): Bosses. callsub Onc1,"Aqua",1068,1071,1071,1069,1044,1144,1045,1065,1264,1894,2016,1112; callsub Onc1,"Demon",1146,1109,1101,1149,1632,1773,1382,1292,1208,1920,1389,1929; callsub Onc1,"Dragon",1715,1718,1155,1380,1206,1385,1717,1714,1716,1262,1720,2022; callsub Onc1,"Earth",1784,1782,1165,1517,1615,1516,1378,1386,1602,1919,1785,1916; callsub Onc1,"Fire",1836,1367,1383,1072,1384,1381,1318,1837,1366,1833,1831,1832; callsub Onc1,"Ghost",1509,1179,1186,1143,1510,1192,1506,1375,1291,1704,1921,1768; callsub Onc1,"Ice",1243,1789,1776,1778,1323,1317,1775,1515,1319,1777,1252,1779; callsub Onc1,"Insect",1054,1100,1139,1279,1099,1625,1304,1194,1305,1618,2087,1147; callsub Onc1,"Kaos",1140,1508,1163,1276,1504,1132,1698,1505,1507,1702,1268,2018; callsub Onc1,"Machina",1151,1616,1745,1682,1270,1622,1202,1678,1673,1978,1623,1685; callsub Onc1,"Nature",1162,1118,1880,1500,1497,1410,1780,1884,1314,1991,1885,1957; callsub Onc1,"Takeshi",1026,1188,1404,1584,1609,1512,1416,1405,1401,1518,1492,1418; callsub Onc1,"Undead",1403,1169,1041,1196,1197,1117,1297,1866,1098,1870,1038,1373; callsub Onc1,"Venom",1621,1256,1037,1402,1209,1216,1207,1883,1148,1987,1871,1874; callsub Onc1,"Wind",1627,1156,1253,1263,1633,1692,1412,1774,1259,1992,1918,1931; //callsub Onc1,"Aqua",1068,1071,1228,1069,1044,1144,1045,1065,1264,2503,2504,2505; //callsub Onc1,"Demon",1146,1109,1101,1149,1632,1773,1382,1292,1208,2536,2537,2538; //callsub Onc1,"Dragon",1715,1718,1155,1380,1206,1385,1717,1714,1716,2524,2525,2526; //callsub Onc1,"Earth",1784,1782,1165,1517,1615,1516,1378,1386,1602,2512,2513,2514; //callsub Onc1,"Fire",1836,1367,1383,1072,1384,1381,1318,1837,1366,2500,2501,2502; //callsub Onc1,"Ghost",1509,1179,1186,1143,1510,1192,1506,1375,1291,2527,2528,2529; //callsub Onc1,"Ice",1243,1789,1776,1778,1323,1317,1775,1515,1319,2506,2507,2508; //callsub Onc1,"Insect",1054,1100,1139,1279,1099,1625,1304,1194,1305,2518,2519,2520; //callsub Onc1,"Kaos",1140,1508,1163,1276,1504,1132,1698,1505,1507,2539,2540,2541; //callsub Onc1,"Machina",1151,1616,1745,1682,1270,1622,1202,1678,1673,2515,2516,2517; //callsub Onc1,"Nature",1162,1118,1880,1500,1497,1410,1780,1884,1314,2509,2510,2511; //callsub Onc1,"Takeshi",1026,1188,1404,1584,1609,1512,1416,1405,1401,2542,2543,2544; //callsub Onc1,"Undead",1403,1169,1041,1196,1197,1117,1297,1866,1098,2533,2534,2535; //callsub Onc1,"Venom",1621,1256,1037,1402,1209,1216,1207,1883,1148,2521,2522,2523; //callsub Onc1,"Wind",1627,1156,1253,1263,1633,1692,1412,1774,1259,2530,2531,2532;// [--------------------------------------------------------]// [ End of configuration. ]// [========================================================] set .br,getbattleflag("base_exp_rate"); set .jr,getbattleflag("job_exp_rate"); // Fix incorrect map cells: setcell "amatsu",314,267,314,314,0,0; setcell "yuno",205,219,205,218,0,0; donpcevent "invasor::On0"; end;Onc0: if(getarg(2) > 0) { set .c1$[.c],getarg(0); set .c2$[.c],getarg(1); set .i[.c],getarg(2); set .c,.c + 1; } return;Onc1: set .@a,getarraysize(.n$); set .n$[.@a],getarg(0); while(.@b < 12) { set getd(".m"+((.@a * 12) + .@),getarg(.@b + 1); set .@b,.@b + 1; } return;On0: while(1) { set .a,0; set .b,0; set .c,0; set .@t,gettimetick(2) / 60; if($TIt <= .@t) set $TIt,.@t + rand(.t1 * 60,.t2 * 60); sleep ($TIt - .@t) * 60 * 1000; set .a,1; set $TIt,0; set .@t,0; donpcevent "invasor::OnTimer"; if(!. set .b,rand(1,getarraysize(.i)); set .b,.b - 1; if(!.c) set .c,rand(1,getarraysize(.n$)); set .c,.c - 1; set .mf1,getmapflag(.c2$[.b],1); set .mf4,getmapflag(.c2$[.b],4); setmapflag .c2$[.b],1; // noteleport setmapflag .c2$[.b],4; // nopenalty callsub Clrmsg; announce "S.O.S.!! "+.c1$[.b]+" ESTA SUFRIENDO UNA TERRIBLE INVACION!!!.",bc_all,0xffaa00; while(.a > 0) { if(!.d) { set .d,4 - .a; killmonster .c2$[.b],"invasor::onm9"; if(.a > 1) callsub Addmsg,"Los ejércitos invasores nuevamente entran en la ciudad.","ffaa00",.c2$[.b]; monster .c2$[.b],0,0,"--ja--",getd(".m"+((.c * 12) + .a + 8)),4 - .a,"invasor::onm9"; } if(mobcount(.c2$[.b],"invasor::onm"+((.a * 3) - 3)) < (.i[.b] * .r1 / 20)) monster .c2$[.b],0,0,"--ja--",getd(".m"+((.c * 12) + (.a * 3) - 3)),.i[.b],"invasor::onm"+((.a * 3) - 3); if(mobcount(.c2$[.b],"invasor::onm"+((.a * 3) - 2)) < (.i[.b] * .r1 / 20)) monster .c2$[.b],0,0,"--ja--",getd(".m"+((.c * 12) + (.a * 3) - 2)),.i[.b],"invasor::onm"+((.a * 3) - 2); if(mobcount(.c2$[.b],"invasor::onm"+((.a * 3) - 1)) < (.i[.b] * .r1 / 20)) monster .c2$[.b],0,0,"--ja--",getd(".m"+((.c * 12) + (.a * 3) - 1)),.i[.b],"invasor::onm"+((.a * 3) - 1); if(.a > 0) sleep 20000; } set .d,0; set .@a,12; while(.@a > 0) { set .@a,.@a - 1; killmonster .c2$[.b],"invasor::onm"+.@a; } if(!.mf1) removemapflag .c2$[.b],1; if(!.mf4) removemapflag .c2$[.b],4; set .mf1,0; set .mf4,0; if(.a == -1) { callsub Addmsg,"Recompensa: Experiencia aumento de rates a "+.r2+"%. ("+.t4+" min)","ffaa00"; setbattleflag "base_exp_rate",getbattleflag("base_exp_rate") + (.br * .r2 / 100); setbattleflag "job_exp_rate",getbattleflag("job_exp_rate") + (.jr * .r2 / 100); sleep .t4 * 60 * 1000; setbattleflag "base_exp_rate",getbattleflag("base_exp_rate") - (.br * .r2 / 100); setbattleflag "job_exp_rate",getbattleflag("job_exp_rate") - (.jr * .r2 / 100); announce "Los rates de la experiencia ha sido restaurados.",bc_all,0xffaa00; } } end;onm0:onm1:onm2: if(playerattached() && .pcr1) if(!rand(100 * 100 / .pcr1)) getitem .pci,1; end;onm3:onm4:onm5: if(playerattached() && .pcr1) if(!rand(75 * 100 / .pcr1)) getitem .pci,1; end;onm6:onm7:onm8: if(playerattached() && .pcr1) if(!rand(50 * 100 / .pcr1)) getitem .pci,1; end;onm9: if(.a < 1) end; set .d,.d - 1; if(.a != 3) { if(.a == 1) set .@a$,"Sbirro"; if(.a == 2) set .@a$,"Hero"; set .@b$,callsub(Grammar_a_an,.n$[.c]); if(playerattached()) { set .@a$,strcharinfo(0)+" ha muerto "+.@b$+" "+.n$[.c]+" "+.@a$+"."; if(.a == 1) getitem .pci,2 * .pcr2 / 100; if(.a == 2) getitem .pci,3 * .pcr2 / 100; } else set .@a$,.@b$+" "+.n$[.c]+" "+.@a$+" haz sido asesinado."; callsub Addmsg,.@a$+" ("+(4 - .a - .d)+"/"+(4 - .a)+")","ffaa00",.c2$[.b]; if(!.d) set .a,.a + 1; } else { if(playerattached()) { set .@a$,strcharinfo(0)+" ha matado a la "+.n$[.c]+" Deux."; getitem .pci,1 * .pcr2 / 100; } else set .@a$,"El "+.n$[.c]+" Deux a sido asesinado."; callsub Addmsg,.@a$,"ffaa00",.c2$[.b]; callsub Addmsg,"El ejército invasor de "+.c1$[.b]+" ha sido derrotado.","ffaa00"; if(.t4 && .r2) set .a,-1; else set .a,0; awake "invasor"; } end;OnTimer: sleep .t3 * 120 * 1000; if(.a < 1) end; set .a,0; awake "invasor"; callsub Clrmsg; callsub Addmsg,"Las defensas de "+.c1$[.b]+" han sido derrotadas por los ejércitos invasores.","ffaa00"; callsub Addmsg,"Hoy será recordado como un día negro para el servidor Apolo-RO /sob.","ffaa00"; end;OnPCLoginEvent: if(.a > 0) { sleep2 3000; if(.a > 0) announce "¡¡S.O.S.!! "+.c1$[.b]+" está sufriendo de una terrible invasión.",bc_self,0xffaa00; } else if(.a == -1) { sleep2 3000; if(.a == -1) announce "La experiencia de rates ha sido aumentada a "+.r2+"%.",bc_self,0xffaa00; } end;OnPCDieEvent: if((.a > 0) && (getsavepoint(0) == .c2$[.b])) save .s$,.sx,.sy; end;OnWhisperGlobal: if(getgmlevel() < .gm) end; set .@n$,"^008888The Invasor^000000"; mes .@n$; mes "Este es el panel de control del sistema de Invasor."; if(!.a) { mes "Actualmente no hay ninguna invasión en curso."; set .@t,$TIt - (gettimetick(2) / 60); if(!.@t) set .@t$,"a few seconds"; else if(.@t < 60) set .@t$,.@t+" minutes"; else { set .@t,.@t / 60; if(.@t < 24) set .@t$,.@t+" hours"; else set .@t$,(.@t / 24)+" days"; } mes "Próximo evento de la invasión automática tendrá lugar en "+.@t$+"."; next; set .@b,select("^880000Exit^000000","Start invasion.") - 1; mes .@n$; if(.@ { mes "Select a city."; next; set .@a,select("^880000Random^000000",.c1$[0],.c1$[1],.c1$[2],.c1$[3],.c1$[4],.c1$[5],.c1$[6],.c1$[7],.c1$[8],.c1$[9],.c1$[10],.c1$[11],.c1$[12],.c1$[13],.c1$[14],.c1$[15],.c1$[16],.c1$[17],.c1$[18],.c1$[19],.c1$[20],.c1$[21],.c1$[22],.c1$[23],.c1$[24],.c1$[25],.c1$[26],.c1$[27],.c1$[28],.c1$[29],.c1$[30],.c1$[31],.c1$[32],.c1$[33],.c1$[34],.c1$[35],.c1$[36],.c1$[37],.c1$[38],.c1$[39]); mes .@n$; set .@a,.@a - 1; mes "Seleccione una clase para la invasión."; next; set .@b,select("^880000Random^000000",.n$[0],.n$[1],.n$[2],.n$[3],.n$[4],.n$[5],.n$[6],.n$[7],.n$[8],.n$[9],.n$[10],.n$[11],.n$[12],.n$[13],.n$[14],.n$[15],.n$[16],.n$[17],.n$[18],.n$[19],.n$[20],.n$[21],.n$[22],.n$[23],.n$[24]); mes .@n$; set .@b,.@b - 1; if(.a) { mes "En este momento, no se puede iniciar una nueva invasión."; mes "Regresa mas tarde."; close; } set .b,.@a; set .c,.@b; awake "invasor"; mes "Una nueva invasión se ha iniciado."; close; } } else if(.a > 0) { mes "Actualmente no existe "+callsub(Grammar_a_an,.n$[.c])+" "+.n$[.c]+" invasión que tienen lugar en "+.c1$[.b]+"."; next; set .@b,select("^880000Exit^000000","Cancelar la actual invasión.") - 1; mes .@n$; if(.@ { if(.a < 1) { mes "Actualmente no hay ninguna invasión en curso."; close; } set .a,0; announce "La invasion en "+.c1$[.b]+" ha sido cancelada.",bc_all,0xffaa00; mes "la invasion en "+.c1$[.b]+" ha sido cancelada."; awake "invasor"; close; } } else { mes "Experiencia de rates aumentada "+.r2+"% como una recompensa por la invasión anterior."; next; set .@b,select("^880000Exit^000000","Restaurar rates.") - 1; mes .@n$; if(.@ { if(.a != -1) { mes "Actualmente los rates no son modificados por el sistema de Invasor."; close; } awake "invasor"; mes "Los rates han sido restaurados."; close; } } mes "Hasta pronto."; close;// Adds a new message to the announcement list:// getarg(0): Message.// getarg(1): Color.// getarg(2): Map. (optional)Addmsg: set .@a,getarraysize($@inv_msg0$); if(.@a >= 10) { deletearray $@inv_msg0$[0],.@a - 9; set .@a,9; } set $@inv_msg0$[.@a],getarg(0); set $@inv_msg1$[.@a],getarg(1); set $@inv_msg2$[.@a],getarg(2,""); if(!.@a) donpcevent "inv_msg::On0"; return;// Clear the announcement list:Clrmsg: set .@a,getarraysize($@inv_msg0$); cleararray $@inv_msg0$[0],"",.@a; cleararray $@inv_msg1$[0],"",.@a; cleararray $@inv_msg2$[0],"",.@a; awake "inv_msg"; return;Grammar_a_an: set .@w$,getarg(0); if( compare("_init_"+.@w$,"_init_A") || compare("_init_"+.@w$,"_init_E") || compare("_init_"+.@w$,"_init_I") || compare("_init_"+.@w$,"_init_O") || compare("_init_"+.@w$,"_init_U") ) return "an"; else return "a";}// Delayed announcements:// Announces a message from the announcement list every 3 seconds.- script inv_msg -1,{On0: while(getarraysize($@inv_msg0$)) { if($@inv_msg2$[0] == "") announce $@inv_msg0$[0],bc_all,"0x"+$@inv_msg1$[0]; else mapannounce $@inv_msg2$[0],$@inv_msg0$[0],bc_all,"0x"+$@inv_msg1$[0]; if(getarraysize($@inv_msg0$)) sleep 3000; deletearray $@inv_msg0$[0],1; deletearray $@inv_msg1$[0],1; deletearray $@inv_msg2$[0],1; } end;} Not sure why he uses v8 instead of the last version released in rAthena, which is v10, but it's edited by the user. Thanks a lot in advance!
  18. Could it be a rough idea to use scripting unitattack for basic attacks then use unitskilluseid on a sequence you determine?
  19. Sorry, it was map and char server conf files You should've edited out all usernames and passwords for security reasons, but if you're using them on your home server and you won't be using the same ones when opening a server to other people it's fine. In case you can't connect to your server for anything (most common situation is you can but you can't get past the login server) then the problem is fully clientside. Could you show us your <RO installation folder>dataclientinfo.xml file contents? You can't usually open that one unless you open it as text. Remember your clientinfo may be read from your data folder (if you diffed your exe that way) or from the GRF files. In case it's been read from GRF, it's on the GRF with highest priority on your DATA.INI that has that file (if you haven't renamed that file on the exe using a hex editor). In case you haven't that, then make one using this reference entry on the wiki. I'm not much better than this on clients BTW, so if I can't help you, hope someone else can. Anyways client-side is universal so you can ask the same question here and in rAthena, 3CeAM, brAthena, Cronus, itAthena (if it exists?) or wherever *tip*
  20. I'm not that good on client side TBH, but will make a try. Is account creation with _M/_F successful? If it is, re-check your conf/map-server.conf and conf/map-server.conf IP addresses and ports.
  21. I think it'd be better to report this and get a core dev to elucidate whether it's a bug or not. Or if it's a good reason to add yet another conf parameter
  22. Has somebody made a bug report of this yet?
  23. I read this topic before, when I was on my cellphone. First of all, thanks Annie for the SRC ! I feel this would be appropriate to add to the repo because it's a classic mechanic, but will refrain to do that until a dev agrees on committing it just to see if my opinion is followed.
  24. No problem ScriptingPhailure. Moving!
  25. Estoy manos a la obra, aunque puede que tarde un tiempo por clases y demás. Te comento que generalmente, cuando la gente quiere que se editen sus scripts, se suelen llenar profusamente con explicaciones y comentarios, pero (igual que he dicho mil veces de los scripts de Euphy en rAthena) este script parece estar intencionalmente ofuscado para evitar que la gente lo edite. Salvo que obtengas algún warning o error al inicio del script en tu consola, poco puedo hacer de momento para encontrar qué es lo que puede fallar.
×
×
  • Create New...

Important Information

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