Jump to content

maqc1

Members
  • Content Count

    51
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by maqc1


  1. 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!


  2. 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.


  3. 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;
        
    }
    

  4. 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 ?


  5. 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;
     }
    

  6. 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.


  7. 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.


  8. 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 =).


  9. 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.


  10. 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,
    

  11. 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

     

     


    Calling Function as a Script Command
    prontera,150,150,5<TAB>script<TAB>Calculator<TAB>999,{
        mes Add(1,2);
    
        function<TAB>Add<TAB>{
            return (getarg(0)+getarg(1));
        }
    }
    

     

     

    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!


  12. 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.