Jump to content

Winz

Members
  • Posts

    1479
  • Joined

  • Last visited

  • Days Won

    14

Posts posted by Winz

  1.  

    /thx
     
    [spoiler=pointless to open this]pertamax diamankan :v

     

    dat spoiler. such message. so much Indonesia. the kaskus thing. such wow. #onlykaskusthing

     

    hmm, do you guys know that JRO has the wonderful headgear things? I wonder, is it custom or how? if it's official, will it be on rA?

  2. i don't really understand about WoE.

    Is FE WoE and SE WoE can be distinguished by the maps? if yes, then you can edit db/skill_nocast.txt, i guess.

     

    create a new zone on npc/mapflag/restricted.txt:

    <map_name><tab>mapflag restricted<tab><zone number>

     

    then restrict the skills for that map trhough db/re(or pre re)/skill_nocast_db.txt:

    <skill name><tab><zone number>

     

    right? idk

  3. First of all, you need to comment the comments.

     

    //===== Hourly Points Script =========================================
    //===== By: ==========================================================
    //= GorthexTiger modified by Nibi
    //===== Current Version: =============================================
    //= 1.0
    //===== Compatible With: =============================================
    //= Any eAthena Version
    //===== Description: =================================================
    //= Get Points every successful hours of gameplay, you cannot get
    //= the points even if you miss a second or a minute. A player will
    //= get a very big bonus if they played 12 hours consecutively
    //= or without logging out of the game. If the player is vending
    //= the script will then stop.
    //===== Additional Comments: =========================================
    //= You can modify the script to your liking.
    //= The default points is Kafrapoints change it anyway if you like.
    //= 1.1 = Check Chatting too
    //= 1.2 = 5 Minute Idle Check & @at/@autotrade check.
    //= 1.3 = Corrected the current balance line on 12 Hours Consecutive
    //====================================================================
    
    -    script    hourlypoints    -1,{
    
    //Start of the Script
    OnPCLoginEvent:
    attachnpctimer ""+strcharinfo(0)+"";
    initnpctimer;
    end;
        
    OnTimer30000:
    //Check if Vending (normal or @at)
    if(checkvending() >= 1 || checkchatting() == 1) {
        dispbottom "The Ragnarok Online hourly cash points event stopped because you were vending / chatting. Please relog if you wish to start again.";
        stopnpctimer;
        end;
    }
    //Check if Idle
    getmapxy( .@map$, .@x, .@y, 0 );
    if(@map$ == .@map$ && @x == .@x && @y == .@y) {
        set @afk, @afk + 1;
    }
    //If move timer resets
    else {
        set @afk, 0;
    }
        set @map$, .@map$; set @x, .@x; set @y, .@y;
    //Idle Check for 10 Minutes
    if(@afk == 10) {
        dispbottom "The Ragnarok hourly points event stopped because you were idle for 5 minutes. Please relog if you wish to start again.";
        stopnpctimer;
        end;
    }
    end;
    
    OnTimer60000:
    set @minute, @minute + 1;
    //Check for 1 Minute
    if(@minute == 60){
        set @minute,0;
        set .@point_amt, 10; //Points to get every hour (default: 10)
        getitem 7227,10;
        dispbottom "You received  TCG Cards by staying ingame for 1 hour";
        set @consecutive_hour, @consecutive_hour + 1;
        }
    
    stopnpctimer;
    initnpctimer;
    end;
    
    }
    //--End of the Script

     

    hourly.txt

  4. did you put type the file name correctly? including the path..

    what's the output on mapserver window?

    if you see "Script could not be loaded" in your client, there should be some messages in mapserver window, either it's "file not found" or script error.

     

    it's a simple change. but you probably just did not load it..


    *has not been able to properly load it


  5. I think .@var is a pointer before, but I realize it is a copy pointer with it's own structure (int). So this is why I always get array size equal 1.

    this is the thing that I'd like to say since last night.

     

    sure, np!

     

    //off topic

    shouldn't it be GLHF? (Good Luck Have Fun)?

  6. wow it's such a complicated code..
     
    If I were you, I probably will do something like this:
     

    set .@choice$,"0xFF0000","0xFF4000","0xFF8000","0xFFBF00","0xFFFF00","0xBFFF00","0x80FF00","0x40FF00","0xFA5882","0x0101DF","0x7401DF";
    select .@choice$;
    
    explode(.@option$,.@choice$,":");
     
    <then on the broadcast>
     
    announce ""+strcharinfo(0)+": "+.Message$+"",bc_all,.@option$[@menu-1];
     
    

    reference: rathena.org/wiki/Select

  7. getarraysize (.@headgear); will of course return the value of 1.

    think about this:

    .@i = 0;
    .@j = 1;
    .@headgear = getd(".headgear" + .@i + "_" + .@j); ---> .@headgear = .headgear0_1;  right?
     

    Therefore, getarraysize(.@headgear); will ofc be 1. (because .headgear0_1 is the same as .headgear0_1[0] (C's rule))

    (could be different in implementation, tho..)

     

    but if you want to print all elements on the array, then it shall be like this:

    for (.@i = 0; .@i <10; .@i++ <or i think: set .@i, .@i+1> {
      for (.@j = 0; .@j<=1; .@j++) {
        for (.@k = 0; .@k<10; .@k++){
          .@headgear = getd(".headgear" + .@i + "_" + .@j + "[" + k + "]");
          debugmes .@headgear;
        }
      }
    }
    

    if you want to print the item name, then.....

    for (.@i = 0; .@i <10; .@i++ <or i think: set .@i, .@i+1> {
      for (.@j = 0; .@j<=1; .@j++) {
        for (.@k = 0; .@k<10; .@k++){
          .@headgear = getd(".headgear" + .@i + "_" + .@j + "[" + k + "]");
          .@headgearname$ = getitemname(.@headgear);
          debugmes .@headgearname$;
        }
      }
    }
    

    is it the question?

  8. @c2greentea

     

    PLEASE READ THIS COMPLETELY BEFORE USING THE SCRIPT.

     

    Modifications:

    1. added some IP, SQL feature to the NPC to check it

    2. added some SQL commands to remove the variables.

     

    how it works:

    after NPC disguised, when a player guessed, he is checked:

    1. if someone else has win it or not (default)

    2. how many wins have obtained (exceed max allowed win? if yes, not allowed to win anymore, IP is stored inside `restrict_disguise`) if no:

    3. if the current IP was stored inside the `restrict_disguise` (if yes, not allowed to win anymore) if no:

    4. set global (account variable) "#disguisewin" to be #disguisewin+1 (if had never win, then variable is added automatically)

    5. when max_round has reached, game will end and will remove the variables "#disguisewin" and empty the banned ip table.

     

    note:

    1. can be bypassed by players who get dynamic IP by: logout, restart modem, login with another ID

    2. if someone did (no. 1) and tried to do so, and (unluckily) he got the IP that the previous player used, he will get banned from the game.

    3. If there are 10 rounds and was played 7 times, NPC will disguise infinitely till GM stops it, right? therefore, even if it's been more than 3 hours (in 3 hours the game is not ended), then the ban will remain the same.

    4. seems like if the event has ended, a player who already touched the max_win must re-login (at least re-select char (esc, char selection, enter)) to join the next game. it's common.

    5. be careful when copying the code (white space problems)

     

    First, execute this SQL script:

    CREATE TABLE IF NOT EXISTS `restrict_disguise` (`ip` varchar(100) NOT NULL default '', PRIMARY KEY (ip)) ENGINE=MyISAM;

     

    Then you can load this script:

    //===== rAthena Script =======================================
    //= Disguise Event
    //===== By: ==================================================
    //= GmOcean
    //===== Current Version: =====================================
    //= 5.1
    //===== Compatible With: =====================================
    //= rAthena Project
    //===== Description: =========================================
    //= Guess a monster name correctly for prizes.
    //=
    //= NOTE: Requires PCRE library installed.
    //===== Additional Comments: =================================
    //= 5.0 Last update by GmOcean.
    //= 5.1 Cleaned and standardized, mostly. [Euphy]
    //============================================================
    
    prontera,161,188,6    script    Disguise Event    795,{
    
        // Currently set to run every two hours.
        // To change times, edit the OnClock labels below.
    
        set .@GMLevel,60;    // GM level required to access NPC.
        set .@n$,"[^0000FFDisguise NPC^000000]";
    
        if (getgmlevel()>=.@GMLevel) {
            mes .@n$;
            mes "Select an option.";
            next;
            switch(select("Turn ON/OFF Event:Event Settings")) {
            case 1:
                mes .@n$;
                if (.EventON) {
                    mes "The Event is currently: [^0000FFON^000000]";
                    mes "Would you like to turn it OFF?";
                } else {
                    mes "The Event is currently: [^FF0000OFF^000000]";
                    mes "Would you like to turn it ON?";
                }
                if(select("Yes:No")==2) close;
                if (.EventON) {
                    set .EventON,0; set .Timer,0;
                    setnpctimer 0; stopnpctimer;
                    announce "A GM has decided to turn the Disguise Event off. As a result no further prizes will be given.",bc_map | bc_blue;
                    deletepset 1;
                    setnpcdisplay "Disguise Event",795;
                    query_sql("delete from global_reg_value WHERE str = \"#disguisewin\";");
                    query_sql("delete from `restrict_disguise`;");
                    close;
                }
                set .EventON,1; set .Timer,1; setnpctimer 0; initnpctimer;
                set .ResetCounter,.ResetCounter+1;
                announce "The Disguise Event will begin in 3 minutes.",bc_all | bc_blue;
                announce "The Event is being held in middle Prontera.",bc_all | bc_blue;
                close;
            case 2:
                mes .@n$;
                mes "Pick a setting to modify.";
                next;
                switch(select("Monster Display:Number of Rounds:Prize Settings")) {
                case 1:
                    setarray .@r$[0],"Disguise as all monsters.","Disguise as MVPs only.";
                    mes .@n$;
                    mes "Choose a disguise rule.";
                    next;
                    set .Rule, select(implode(.@r$,":"));
                    mes .@n$;
                    mes "The Disguise Rule has been set:";
                    mes "  > ^0055FF"+.@r$[.Rule-1]+"^000000";
                    close;
                case 2:
                    mes .@n$;
                    mes "Input the number of rounds you want the event to last.";
                    mes "Current number: [^0000FF"+.Rounds+"^000000]";
                    next;
                    input .@Rounds;
                    set .Rounds,.@Rounds;
                    mes .@n$;
                    mes "The number of rounds has been changed to "+.Rounds+".";
                    close;
                case 3:
                    mes .@n$;
                    mes "Input the Item ID of the prize given each round.";
                    mes "Current item: [^0000FF"+getitemname(.Prize)+"^000000] (ID #"+.Prize+")";
                    next;
                    input .@Prize;
                    mes .@n$;
                    if (getitemname(.@Prize)=="" || getitemname(.@Prize)=="null") {
                        mes "That item does not exist. Please try again.";
                        close;
                    }
                    set .Prize,.@Prize;
                    mes "Input the amount to be given.";
                    next;
                    input .@amount;
                    mes .@n$;
                    if (.@amount<=0 || .@amount>=10000) {
                        mes "That amount is invalid. Using default ammount of 1.";
                        set .@amount,1;
                        next;
                        mes .@n$;
                    }
                    set .PrizeAmt,.@amount;
                    mes "The Prize has been changed successfully.";
                    mes "Prize: "+.PrizeAmt+"x [^0000FF"+getitemname(.Prize)+"^000000]";
                    close;
                }
            }
        }
        if (.EventON) end;
        mes .@n$;
        mes "Welcome.";
        mes "How may I be of assistance?";
        if(select("Information:Nothing, just passing through.")==2) close;
        next;
        mes .@n$;
        mes "This event is quite simple.";
        mes "At the start of the event, I will";
        mes "disguise myself as a random";
        mes "monster. You have to shout";
        mes "that monter's name out loud.";
        next;
        mes "If you are correct, you will receive";
        mes "a prize. If not, keep trying!";
        mes "That's all that there is to this event.";
        close;
    
    OnInit:
        set .EventON,0;
        set .Wait,0;
        set .Winner,0;
        set .ResetCounter,0;
        set .Rounds,15;
        set .Prize,6153;
        set .PrizeAmt,75;
        set .Rule,1;
        setarray .MVP[0],1038,1039,1046,1059,1086,1087,1112,1115,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373,
                          1389,1399,1418,1492,1502,1511,1583,1623,1630,1646,1647,1648,1649,1650,1651,1658,1685,1688,
                       1708,1719,1734,1751,1768,1779,1785,1802,1832,1871,1874,1885,1917,1980,2022,2068,2087,2131,
                       2156,2165;
        set .BlackList$, "1003,1006,1017,1021,1022,1027,1043,1075,1136,1137,1168," +
            "1171,1172,1173,1181,1187,1210,1217,1218,1222,1223,1224,1225,1226,1227,1228," +
            "1233,1284,1407,1411,1414,1495,1501,1900,1996,2000,2001,2002,2003,2004," +
            "2005,2006,2007,2011,2012,2025,2028,2029,2030,2031,2032,2033,2034,2035," +
            "2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049," +
            "2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063," +
            "2064,2065,2066,2067,2075,2076,2077,2078,2079,2080,2081,2083,2084,2085," +
            "2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,2099," +
            "2100,2101,2012,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113," +
            "2114,2115,2116,2117,2118,2119,2120,2121,2123,2124,2125,1496,";
        end;
    OnClock0000:
    OnClock0200:
    OnClock0400:
    OnClock0422:
    OnClock0600:
    OnClock0800:
    OnClock1000:
    OnClock1200:
    OnClock1400:
    OnClock1600:
    OnClock1800:
    OnClock2000:
    OnClock2227:
        setcell "prontera",163,192,159,185,cell_walkable,0; // Sets cells unwalkable
        set .ResetCounter,.ResetCounter+1;
        set .EventON,1;
        set .Timer,1;
        set .Wait,1;
        announce "The Disguise Event will begin in 3 minutes. The Event is being held in middle Prontera.",bc_all | bc_blue;
        announce "RULE: Do not flood while the event is on or you might be silenced for 30 mins by a GM.",bc_all | bc_blue;
        announce "Prize: 75 SPECs per round, total of 15 rounds.",bc_all | bc_blue;
        announce "NOTE: Some cells near my area shall be unwalkable during the event.",bc_all | bc_blue;
        setnpctimer 0;
        initnpctimer;
        end;
    OnTimer10000:
        if (.Timer || .Change) end;
        set .Wait,0;
        goto iDisguise;
        end;
    OnTimer30000:
        if (.Timer) end;
        set .Change,0;
        setnpcdisplay "Disguise Event",795;
        npctalk "You took too long to guess what I was. Please wait 10 seconds while I disguise again.";
        specialeffect EF_DETECT2;
        set $MonsterName$,"";
        deletepset 1;
        stopnpctimer;
        setnpctimer 0;
        initnpctimer;
        end;
    OnTimer60000:
        if (.Timer!=1) end;
        announce "2 minutes left. The Disguise Event is being held in middle Prontera.",bc_all | bc_blue;
        announce "RULE: Do not flood while the event is on or you might be silenced for 30 mins by a GM.",bc_all | bc_blue;
        announce "Prize: 75 SPECs per round, total of 15 rounds.",bc_all | bc_blue;
        end;
    OnTimer120000:
        if (.Timer!=1) end;
        announce "1 minute left. The Disguise Event is being held in middle Prontera.",bc_all | bc_blue;
        announce "RULE: Do not flood while the event is on or you might be silenced for 30 mins by a GM.",bc_all | bc_blue;
        announce "Prize: 75 SPECs per round, total of 15 rounds.",bc_all | bc_blue;
        end;
    OnTimer180000:
        if (.Timer!=1) end;
        announce "The Disguise Event has begun!",bc_all | bc_blue;
        announce "The Event is being held in middle Prontera.",bc_all | bc_blue;
        announce "Prize: 75 SPECs per round, total of 15 rounds.",bc_all | bc_blue;
        set .Timer,0; stopnpctimer;
        setnpctimer 0; initnpctimer;
    iDisguise:
        if (.Rule==1) {
            set .Winner,0;
            set .Monster,1000+rand(1,995);
            if (compare(","+.BlackList$+"," , ","+.Monster+",")) goto iDisguise;
            if (.Monster==.LastMonster) goto iDisguise;
            set .LastMonster,.Monster;
            set $MonsterName$,getmonsterinfo(.Monster,0);
        }
        if (.Rule==2) {
            set .Winner,0;
            set .Monster,rand(49);
            set $MonsterName$,getmonsterinfo(.MVP[.Monster],0);
        }
        deletepset 1;
        sleep 1000;
        if (.Rule==1) setnpcdisplay "Disguise Event",.Monster;
        if (.Rule==2) setnpcdisplay "Disguise Event",.MVP[.Monster];
        defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".*", "iCorrect";
        activatepset 1;
        set .Change,1;
        setnpctimer 0;
        end;
    iCorrect:
        if (.Winner) {
            dispbottom "Someone has already won this round.";
            end;
        }
        
        
        set .maxwin, 5;
        if (#disguisewin >= .maxwin) {
            dispbottom "Your ID has won "+#disguisewin+" rounds of this disguise game.";
            dispbottom "According to GM, you are not allowed to win anymore on this game.";
            emotion e_sob,1;
            query_sql("INSERT INTO `restrict_disguise` (ip) VALUES (\""+escape_sql(getcharip())+"\");");
            end;
        }
        
        set @ipwin, query_sql("SELECT `ip` from `restrict_disguise` WHERE `ip` = \""+escape_sql(getcharip())+"\" ");
        
        if (@ipwin > 0) {
            dispbottom "Your IP has won "+.maxwin+" rounds of this disguise game.";
            dispbottom "According to GM, you are not allowed to win anymore on this game.";
            emotion e_sob,1;
            end;
        }
        
        set #disguisewin, #disguisewin+1;
        
        set .Winner,1;
        set .RoundCount,.RoundCount+1;
        deletepset 1;
        activatepset 1;
        getitem .Prize,.PrizeAmt;
        announce strcharinfo(0)+" is correct! I was disguised as: "+$MonsterName$+"",bc_map | bc_blue;
        if (.RoundCount>=.Rounds) {
            setnpcdisplay "Disguise Event",795;
            set .RoundCount,0; set .Change,0; set .EventON,0;
            setnpctimer 0; stopnpctimer;
            announce "Thank you all for playing. That was the last round of the Disguise Event. Come play again later.",bc_all | bc_blue;
            setcell "prontera",163,192,159,185,cell_walkable,1; // Sets cells walkable again 
            query_sql("delete from global_reg_value WHERE str = \"#disguisewin\";");
            query_sql("delete from `restrict_disguise`;");
            end;
        }
        setnpcdisplay "Disguise Event",795;
        set .Change,0;
        setnpctimer 0;
        end;
    }
     
    

    oh, and something like

    [SQL]: DB error - Duplicate entry '127.0.0.1' for key 'PRIMARY'

    will appear if winning players still guessing the disguise. don't care about this. (i'm lazy to do this. try to modify it using insert into ... if does not exist)


    *guessing correctly

  9.  

    For such issue you can use some open sourced font like Google Font: https://www.google.com/fonts

    Alright, I think I solved it. If you visit the site (ebilro.altervista.org) you should see the Amatic font now (http://www.fontsquirrel.com/fonts/amatic). Now time to learn how to add server information (php right?). Although I don't host a server, can I still do this? I'm assuming it will just say that everything is offline.

     

     

    yes. PHP has variables thing to be set. you also can render PHP using Apache (XAMPP)

  10. I assume you are using a theme, named "FluxWOW"

    then, open the addons folder, go to vote4points (or something (IDK)) and go to the "theme" folder. change the folder name inside it to "FluxWOW".

     

    this should do the trick..

  11. okay, nvm.

     

    AS I know, you are NOT eligible to get client's MAC address. the only thing you can ban is their character, ID, and IPv4 IP (which if the player got a dynamic IP, will be able to be bypassed by restarting modem)

     

    What do you wish from @afk or @afk2? THIS?

     

    http://rathena.org/board/topic/71389-afk-with-afk-hat/

    or this?

    http://rathena.org/board/topic/82415-afk-command/?p=233804

     

    found from here:

    http://lmgtfy.com/?q=rathena+%40afk

×
×
  • Create New...