maqc1
Members-
Content Count
51 -
Joined
-
Last visited
-
Days Won
1
maqc1 last won the day on January 3 2016
maqc1 had the most liked content!
About maqc1
-
Rank
Advanced Member
Profile Information
-
Gender
Male
-
Location:
Québec
-
Github
maqc1
-
Emulator
Hercules
Recent Profile Visitors
1835 profile views
-
AsurielRO reacted to an answer to a question: Npc always stock up players
-
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;
-
maqc1 reacted to an answer to a question: Can't open guild storage
-
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?
-
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!
-
Blackisting Palettes per classes and gender
maqc1 replied to HyperSonic2097's question in General Server Support
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... -
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.
-
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.
-
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" ?
-
luan122 reacted to a question: Novice starts with 6281 MaxSp...?
-
Normally this is an issue related to DirectX… Do you have DirectX installed on your computer? What operating system are you using?
-
Do other people have a similar issue? Is so I'll open an issue on GitHub.
-
How do i edit/make my own User Interface [UI]?
maqc1 replied to anolythe's question in General Server Support
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- 3 replies
-
- user interface
- ui
-
(and 2 more)
Tagged with:
-
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; }
-
What do you mean "in all world" ? Je parle français (Québec) si tu es plus à l'aise en français.
-
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 ?
-
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; }
-
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.