Jump to content
  • 0

Disguise Event NPC fix


c2greentea

Question


  • Group:  Members
  • Topic Count:  68
  • Topics Per Day:  0.02
  • Content Count:  173
  • Reputation:   0
  • Joined:  06/07/14
  • Last Seen:  

This is my Disguise Event script http://upaste.me/r/acce1547260f4811d

 

My problem is if the player inputs a correct monster name even if the NPC hasn't disguised yet, the player wins. We wanted to have a delay, make sure the NPC gets disguised first before players could win from random guessing.

 

Please help.

Link to comment
Share on other sites

7 answers to this question

Recommended Posts


  • Group:  Members
  • Topic Count:  22
  • Topics Per Day:  0.00
  • Content Count:  1479
  • Reputation:   172
  • Joined:  12/14/11
  • Last Seen:  

try:
 

//===== 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;
                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 .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 
        end;
    }
    setnpcdisplay "Disguise Event",795;
    set .Change,0;
    setnpctimer 0;
    end;
}

 
modified some things starting on line 225:
 
1. moved pset pattern and activatepset to AFTER NPC disguised
2. Paused the script for 1 second after decided which monster to disguise AND before disguising

Edited by Winz
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  68
  • Topics Per Day:  0.02
  • Content Count:  173
  • Reputation:   0
  • Joined:  06/07/14
  • Last Seen:  

Thanks very much winz. How about adding a limit to max win per IP address? I hope you can still help me. Very much appreciated

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  22
  • Topics Per Day:  0.00
  • Content Count:  1479
  • Reputation:   172
  • Joined:  12/14/11
  • Last Seen:  

Are you sure you are going to do this (checking the char's IP, not account_id)? If so, then I can win the first x rounds. Then after I'm banned from disguise event, I just restart my modem (I am using a dynamically given WAN IP from my ISP) and get the prizes again. and I'll do that again and again and again.

 

anyway, I'll make both, making sure that the char's account_id and chars' IP is monitored.

 

 

wait, I know why you want to do this.

it's because you're preventing 1 player to play the disguise event and get the prize so many times by logging in different account, right?

 

if so, that's pretty.... motorcycle..

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  68
  • Topics Per Day:  0.02
  • Content Count:  173
  • Reputation:   0
  • Joined:  06/07/14
  • Last Seen:  

Yes exactly that's why I want it limited Winz. What's the best thing to do here? Even per account id, or IP, or mac address, rathena users just said players will always find a way to get a loophole. 

 

I think per IP would be best though what do you think?

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  22
  • Topics Per Day:  0.00
  • Content Count:  1479
  • Reputation:   172
  • Joined:  12/14/11
  • Last Seen:  

okay, so it will be double check: ID and IP. will continue doing this in some hours..

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  22
  • Topics Per Day:  0.00
  • Content Count:  1479
  • Reputation:   172
  • Joined:  12/14/11
  • Last Seen:  

@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

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  68
  • Topics Per Day:  0.02
  • Content Count:  173
  • Reputation:   0
  • Joined:  06/07/14
  • Last Seen:  

Thanks Winz we shall try it ASAP.

 

For the meantime can you check this one? http://rathena.org/board/topic/98506-modified-euphys-item-rewards-npc/

 

Maybe you can also help me with that I'm very willing to pay just to get it done please.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...