Jump to content

maqc1

Members
  • Content Count

    51
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by maqc1

  1. This happens if you close the dialog using close2; but then you forget to use end; to stop the script. Good behavior : mes "blablabla"; close2; emotion 21; // Or other stuff end;
  2. You were right, the guild storage was set to 1000 (i did not remember). I lowered it to 900 and now it works! Thanks a lot! By the way, what is the limit for character storage?
  3. Hi, I tired many times to run GRF Editor on Linux (Linux Mint for myself), tried many versions of .NET Framework integration in Wine, but always without success. The best workaround I found was to run Windows in Virtualbox alongside Linux. Hope this saves you time!
  4. The easiest way (in my opinion) would be to script a NPC that does a class check first, e.g. : switch(Class) { case(Job_Novice): setlook(LOOK_HAIR_COLOR, 0); //Or else... break; case(Job_Assassin): setlook(LOOK_HAIR_COLOR, 30); //Or else... break; } etc...
  5. Well I did increase the storage size to 600 items, but I never had an issue with that (been using Hercules since 1½ years). I started having this issue around commit b950a58. Is storage size bigger than 300 now impossible in Hercules? Also, character storage works fine. I only have problems with guild storage.
  6. It is an encoding problem. From my experience, you need to have all palette files in ANSI (Windows 1252) encoding. You seem to have them in UNICODE (korean characters) encoding.
  7. Well I did modify small parts of the source code, but nothing that should alter storage. Any idea of what could cause a "data size mismatch" ?
  8. Normally this is an issue related to DirectX… Do you have DirectX installed on your computer? What operating system are you using?
  9. Do other people have a similar issue? Is so I'll open an issue on GitHub.
  10. The UI is defined in the executable file and the text displayed in the UI is defined by the msgstringtable.txt file. For example, old sakray executables have Equip and Stats windows separated, while newer RagRE executables have them merged. The only way to "modify" that is by hexing the executable file. You can look up the wiki about hexing : http://herc.ws/wiki/Hexing
  11. Well assuming that all players need to talk to "Emperium Breaker Test" NPC and that there is no duplicate of that NPC (he is unique), that should do the trick : prontera,164,169,4 script Emperium Breaker Test 4_F_ACROSS,{ set @time, empbrk_record; set @m, @time / 60000; set @time, @time - (@m * 60000); set @s, @time /1000; set @time, @time - (@s * 1000); mes "[Emperium Breaker Test]"; mes "Official Record by ^5050A0"+empbrk_record$+"^000000"; mes " ^000080"+@m+"^000000m ^000080"+@s+"^000000s ^000080"+@time+"^000000ms"; set @time, empbrk_record; set @m, @time / 60000; set @time, @time - (@m * 60000); set @s, @time /1000; set @time, @time - (@s * 1000); mes "Your Own Record:"; mes " ^000080"+@m+"^000000m ^000080"+@s+"^000000s ^000080"+@time+"^000000ms"; mes "Would you like to try a new record?"; next; if (getgmlevel()==99) { menu "Standard Menu",-,"Reset",L_reset,"Reset Rooms",L_emptyrooms,"Exit",L_Exit;} menu "Yes",-,"No",L_Exit,"Reset",L_resc; cleararray .arena$[0],"",4; mes "[Emperium Breaker Test]"; if (getareausers("pvp_n_4-5",94,128,105,139)) mes "Emp n° ^0000DF1 ^FF0000 Busy^000000"; else{ mes "Room ^0000DF1 ^00A000 Free^000000"; set .arena$[0],"^0000DFEmperium^000000";} if (getareausers("pvp_n_4-5",60,94,71,105)) mes "Emp n° ^B05D002 ^FF0000 Busy^000000"; else{ mes "Room ^B05D002 ^00A000 Free^000000"; set .arena$[1],"^B05D00Emperium^000000";} if (getareausers("pvp_n_4-5",94,60,105,71)) mes "Emp n° ^B00FB03 ^FF0000 Busy^000000"; else{ mes "Room ^90AF003 ^00A000 Free^000000"; set .arena$[2],"^90AF00Emperium^000000";} if (getareausers("pvp_n_4-5",128,94,139,105)) mes "Emp n° ^50AF004 ^FF0000 Busy^000000"; else{ mes "Room ^500F004 ^00A000 Free^000000"; set .arena$[3],"^500F00Emperium^000000";} next; switch (select(.arena$[0],.arena$[1],.arena$[2],.arena$[3],"Esci")){ case 1: if (getareausers("pvp_n_4-5",60,94,71,105) == 0){ if($@someonegotin1 > 0){ mes "Room is now BUSY"; close;} set $@someonegotin1, 1; warp "pvp_n_4-5",99,128; killmonster "pvp_n_4-5","EmpBrk#1::OnThisMobDeath"; initnpctimer "EmpBrk#1";} break; case 2: if (getareausers("pvp_n_4-5",60,94,71,105) == 0){ if($@someonegotin2 > 0){ mes "Room is now BUSY"; close;} set $@someonegotin2, 1; warp "pvp_n_4-5",68,99; killmonster "pvp_n_4-5","EmpBrk#2::OnThisMobDeath"; initnpctimer "EmpBrk#2";} break; case 3: if (getareausers("pvp_n_4-5",94,60,105,71) == 0){ if($@someonegotin3 > 0){ mes "Room is now BUSY"; close;} set $@someonegotin3, 1; warp "pvp_n_4-5",100,68; killmonster "pvp_n_4-5","EmpBrk#3::OnThisMobDeath"; initnpctimer "EmpBrk#3";} break; case 4: if (getareausers("pvp_n_4-5",128,94,139,105) == 0){ if($@someonegotin4 > 0){ mes "Room is now BUSY"; close;} set $@someonegotin4, 1; warp "pvp_n_4-5",130,99; killmonster "pvp_n_4-5","EmpBrk#4::OnThisMobDeath"; initnpctimer "EmpBrk#4";} break; default: close; } sc_end SC_ALL; close; L_reset: mes "[Emperium Breaker Test]"; mes "Are you sure to reset official record ?"; menu "Yes",-,"No",L_Exit; set empbrk_record, 0; set empbrk_record$, ""; close; L_resc: mes "[Emperium Breaker Test]"; mes "Are you suere to rest your record?"; menu "Yes",-,"No",L_Exit; set empbrk_record, 0; L_emptyrooms: set $@someonegotin1, 0; set $@someonegotin2, 0; set $@someonegotin3, 0; set $@someonegotin4, 0; close; L_Exit: close; } - script EmpBrk#1 FAKE_NPC,{ OnTimer3000: if (.end == 1) { warpchar "prontera",150,172,.charid; stopnpctimer; set .end, 0; } end; OnTimer5000: set .x1,94; set .y1,128; set .x2,105; set .y2,139; set .xe,100; set .ye,134; areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"Let's ready to break the Emperium",0; set $@someonegotin1, 0; end; OnTimer7000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"5",0; end; OnTimer8000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"4",0; end; OnTimer9000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"3",0; end; OnTimer10000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"2",0; end; OnTimer11000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"1",0; end; OnTimer12000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"GO!!!",0; monster "pvp_n_4-5",.xe,.ye,"Emperium",1288,1,"EmpBrk#1::OnThisMobDeath"; end; OnTimer1200000: warpchar "prontera",150,172,.charid; stopnpctimer; set .end, 1; end; OnThisMobDeath: stopnpctimer "EmpBrk#1"; set .time, getnpctimer(0,"EmpBrk#1"); set .time, .time - 12000; if (.time < empbrk_record || empbrk_record == 0) { areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"New Own Record!!!",0; set empbrk_record, .time; } if (.time < empbrk_record || empbrk_record == 0) { areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"New Official Record!!!",0; announce strcharinfo(0)+" is now the NO. 1 Emperium Breaker!!",0; set empbrk_record, .time; set empbrk_record$,strcharinfo(0); } set .m, .time / 60000; set .time, .time - (.m * 60000); set .s, .time /1000; set .time, .time - (.s * 1000); areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"Your time is "+.m+"m "+.s+"s "+.time+"ms",0; set .end,1; set .charid,getcharid(0); initnpctimer; end; } pvp_n_4-5,99,125,0 script EmpBrk#1_touch FAKE_NPC,2,1,{ OnTouch: killmonster "pvp_n_4-5","EmpBrk#1::OnThisMobDeath"; mes "[Emperium Breaker Test]"; mes "You cannot exit from small sqare."; close2; set $@someonegotin1, 0; warp "prontera",163,168; close; } - script EmpBrk#2 FAKE_NPC,{ OnTimer3000: if (.end == 1) { warpchar "prontera",150,172,.charid; stopnpctimer; set .end, 0; } end; OnTimer5000: set .x1,60; set .y1,94; set .x2,71; set .y2,105; set .xe,65; set .ye,99; areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"Let's ready to break the Emperium",0; set $@someonegotin2, 0; end; OnTimer7000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"5",0; end; OnTimer8000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"4",0; end; OnTimer9000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"3",0; end; OnTimer10000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"2",0; end; OnTimer11000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"1",0; end; OnTimer12000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"GO!!!",0; monster "pvp_n_4-5",.xe,.ye,"Emperium",1288,1,"EmpBrk#2::OnThisMobDeath"; end; OnTimer1200000: warpchar "prontera",150,172,.charid; stopnpctimer; set .end, 1; end; OnThisMobDeath: stopnpctimer "EmpBrk#2"; set .time, getnpctimer(0,"EmpBrk#2"); set .time, .time - 12000; if (.time < empbrk_record || empbrk_record == 0) { areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"New Own Record!!!",0; set empbrk_record, .time; } if (.time < empbrk_record || empbrk_record == 0) { areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"New Official Record!!!",0; announce strcharinfo(0)+" is now the NO. 1 Emperium Breaker!!",0; set empbrk_record, .time; set empbrk_record$,strcharinfo(0); } set .m, .time / 60000; set .time, .time - (.m * 60000); set .s, .time /1000; set .time, .time - (.s * 1000); areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"Your time is "+.m+"m "+.s+"s "+.time+"ms",0; set .end,1; set .charid,getcharid(0); initnpctimer; end; } pvp_n_4-5,74,99,0 script EmpBrk#2_touch FAKE_NPC,1,2,{ OnTouch: killmonster "pvp_n_4-5","EmpBrk#2::OnThisMobDeath"; mes "[Emperium Breaker Test]"; mes "You cannot exit from small sqare."; close2; set $@someonegotin2, 0; warp "prontera",163,168; close; } - script EmpBrk#3 FAKE_NPC,{ OnTimer3000: if (.end == 1) { warpchar "prontera",150,172,.charid; stopnpctimer; set .end, 0; } end; OnTimer5000: set .x1,94; set .y1,60; set .x2,105; set .y2,71; set .xe,99; set .ye,65; areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"Let's ready to break the Emperium",0; set $@someonegotin3, 0; end; OnTimer7000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"5",0; end; OnTimer8000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"4",0; end; OnTimer9000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"3",0; end; OnTimer10000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"2",0; end; OnTimer11000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"1",0; end; OnTimer12000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"GO!!!",0; monster "pvp_n_4-5",.xe,.ye,"Emperium",1288,1,"EmpBrk#3::OnThisMobDeath"; end; OnTimer1200000: warpchar "prontera",150,172,.charid; stopnpctimer; set .end, 1; end; OnThisMobDeath: stopnpctimer "EmpBrk#3"; set .time, getnpctimer(0,"EmpBrk#3"); set .time, .time - 12000; if (.time < empbrk_record || empbrk_record == 0) { areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"New Own Record!!!",0; set empbrk_record, .time; } if (.time < empbrk_record || empbrk_record == 0) { areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"New Official Record!!!",0; announce strcharinfo(0)+" is now the NO. 1 Emperium Breaker!!",0; set empbrk_record, .time; set empbrk_record$,strcharinfo(0); } set .m, .time / 60000; set .time, .time - (.m * 60000); set .s, .time /1000; set .time, .time - (.s * 1000); areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"Your time is "+.m+"m "+.s+"s "+.time+"ms",0; set .end,1; set .charid,getcharid(0); initnpctimer; end; } pvp_n_4-5,100,74,0 script EmpBrk#3_touch FAKE_NPC,2,1,{ OnTouch: killmonster "pvp_n_4-5","EmpBrk#3::OnThisMobDeath"; mes "[Emperium Breaker Test]"; mes "You cannot exit from small sqare."; close2; set $@someonegotin3, 0; warp "prontera",163,168; close; } - script EmpBrk#4 FAKE_NPC,{ OnTimer3000: if (.end == 1) { warpchar "prontera",150,172,.charid; stopnpctimer; set .end, 0; } end; OnTimer5000: set .x1,128; set .y1,94; set .x2,139; set .y2,105; set .xe,134; set .ye,99; areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"Let's ready to break the Emperium",0; set $@someonegotin4, 0; end; OnTimer7000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"5",0; end; OnTimer8000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"4",0; end; OnTimer9000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"3",0; end; OnTimer10000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"2",0; end; OnTimer11000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"1",0; end; OnTimer12000: areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"GO!!!",0; monster "pvp_n_4-5",.xe,.ye,"Emperium",1288,1,"EmpBrk#4::OnThisMobDeath"; end; OnTimer1200000: warpchar "prontera",150,172,.charid; stopnpctimer; set .end, 1; end; OnThisMobDeath: stopnpctimer "EmpBrk#4"; set .time, getnpctimer(0,"EmpBrk#4"); set .time, .time - 12000; if (.time < empbrk_record || empbrk_record == 0) { areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"New Own Record!!!",0; set empbrk_record, .time; } if (.time < empbrk_record || empbrk_record == 0) { areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"New Official Record!!!",0; announce strcharinfo(0)+" is now the NO. 1 Emperium Breaker!!",0; set empbrk_record, .time; set empbrk_record$,strcharinfo(0); } set .m, .time / 60000; set .time, .time - (.m * 60000); set .s, .time /1000; set .time, .time - (.s * 1000); areaannounce "pvp_n_4-5",.x1,.y1,.x2,.y2,"Your time is "+.m+"m "+.s+"s "+.time+"ms",0; set .end,1; set .charid,getcharid(0); initnpctimer; end; } pvp_n_4-5,125,100,0 script EmpBrk#4_touch FAKE_NPC,1,2,{ OnTouch: killmonster "pvp_n_4-5","EmpBrk#4::OnThisMobDeath"; mes "[Emperium Breaker Test]"; mes "You cannot exit from small sqare."; close2; set $@someonegotin4, 0; warp "prontera",163,168; close; }
  12. What do you mean "in all world" ? Je parle français (Québec) si tu es plus à l'aise en français.
  13. Well obviously this is happening because variables @mpempbrk$, @empbrkx and @empbrky are not set when the player touches EmpBrk#1_touch, EmpBrk#2_touch, EmpBrk#3_touch or EmpBrk#4_touch... Is there a possibility for players to enter the room without talking to the "Emperium Breaker Test" NPC ?
  14. maqc1

    Help with input

    As far as I know, you cannot compare two strings using the "==" operator. You need to use the "compare" function. input .@Pass$; if (compare(.@Pass$, "0")) { mes " "; mes "Alright, you can always talk me to again if you changed your mind."; close; }
  15. Hi folks, I encounter a peculiar problem since my last git pull. All new created characters start with 6281 max SP. Max HP are fine. I looked around some relevant files to see if something was wrong, but everything seems perfectly fine (tables in /db/pre-re/job_db.conf and /db/job_db2.txt are both correct). When the character change class, the Max SP go back to normal. Any idea where that comes from? Thanks! [info]: Hercules 64-bit for Linux [info]: Git revision (src): '5c5fabc490cdad507650d0b3713221bd92da765d' [info]: Git revision (scripts): '5c5fabc490cdad507650d0b3713221bd92da765d' [info]: OS version: 'Ubuntu 14.04.5 LTS [x86_64]' EDIT : Seems like even old novices (i.e. created before the git pull) have super high Max SP. I don't get it =/ EDIT 2 : Novices seem to have higher ASPD as well (175 ASPD at level 1...) EDIT 3 : After further testing, I found that Max SP become normal when novice reach base level 76. ASPD don't, though.
  16. I did this a couple months ago and it worked great. First, you need to import all of eAthena SQL updates. You can find them in eAthena's repository : https://eathena-project.googlecode.com/svn/trunk/sql-files/ After that, you import "eAthena-main-upgrade.sql" from Hercules' repository. You can find it here : https://github.com/HerculesWS/Hercules/blob/master/sql-files/upgrades/eAthena-main-upgrade.sql You can do the same with "eAthena-logs-upgrade.sql" if you want to keep your old logs : https://github.com/HerculesWS/Hercules/blob/master/sql-files/upgrades/eAthena-logs-upgrade.sql After this is done, you run all Hercules SQL updates from the repository : https://github.com/HerculesWS/Hercules/tree/master/sql-files/upgrades As I said, I moved from eAthena to Hercules a couple months ago and it worked fine! Just backup your database in case you make an error.
  17. Well according to Hercules' repository (https://github.com/HerculesWS/Hercules/blob/master/sql-files/main.sql), the 'birthdate' row should be DATE, not DATETIME : CREATE TABLE IF NOT EXISTS `login` ( `account_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `userid` VARCHAR(23) NOT NULL DEFAULT '', `user_pass` VARCHAR(32) NOT NULL DEFAULT '', `sex` ENUM('M','F','S') NOT NULL DEFAULT 'M', `email` VARCHAR(39) NOT NULL DEFAULT '', `group_id` TINYINT(3) NOT NULL DEFAULT '0', `state` INT(11) UNSIGNED NOT NULL DEFAULT '0', `unban_time` INT(11) UNSIGNED NOT NULL DEFAULT '0', `expiration_time` INT(11) UNSIGNED NOT NULL DEFAULT '0', `logincount` MEDIUMINT(9) UNSIGNED NOT NULL DEFAULT '0', `lastlogin` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `last_ip` VARCHAR(100) NOT NULL DEFAULT '', `birthdate` DATE NOT NULL DEFAULT '0000-00-00', `character_slots` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', `pincode` VARCHAR(4) NOT NULL DEFAULT '', `pincode_change` INT(11) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`account_id`), KEY `name` (`userid`) ) ENGINE=MyISAM AUTO_INCREMENT=2000000; So that's your problem. The server is trying to append DATE information in a DATETIME row. Switch it back to DATE and you should be fine =).
  18. What is the MySQL data type for the row "birthdate" in the "login" table? It should be DATE. Maybe you have it set to DATETIME? As of in-game errors, I honestly don't know where and when is used the "birthdate" row. On my server, all accounts have a "0000-00-00" value, which means it probably isn't used.
  19. What do you mean by "lots of sql errors" ? Can you post a screenshot?
  20. I think the text colours are embedded directly into the executable file, so unless you are very good at hexing, I don't think this is possible... I might be wrong though!
  21. According to MySQL documentation, it is possible to assign a default value to the "datetime" data type since MySQL 5.6.5. Maybe you have an older version? In the end, it's just the default value. This value should *technically* never appear, so you could just remove the default value : `time` DATETIME NOT NULL,
  22. Thanks Emistry, got it to work. The function needs to be declared ABOVE the function call. It was that simple! Gotta get to work now EDIT : I just modified the wiki according to that rule.
  23. Nope, still the same error. It looks like this feature isn't implemented yet... Is anyone able to reproduce the wiki's example?
  24. Hi folks! According to the wiki, it is possible to call a function as a script command : http://herc.ws/wiki/Functions#Calling_Function_as_a_Script_Command However, I am unable to reproduce the example. The console throws me a parse_line error : [Error]: script error in file 'npc/test/test.txt' line 91 column 12 parse_line: need ';' 90: { * 91: mes Add(1,2); ~~~~~~~~~~~^ 92: 93: function Add { 94: return (getarg(0)+getarg(1)); Is there any way to make this work? Or is it an error on the wiki? Thanks in advance!
  25. I've tried multiple time in Linux (Linux Mint 17.2 for myself) to run it with Wine, but it never works perfectly fine. The "best" configuration I found was to use the "PlayOnLinux" interface and installing .NET Framework (I tried several versions), but even then I got some error. Best workaround is to simply install VirtualBox and run a version of Windows XP inside Linux.
×
×
  • Create New...

Important Information

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