Emistry icon

[RO] Promo Code Event

Emistry | PRO | 01/30/16 07:07:53 AM UTC | 0 ⭐ | 515 👁️ | Never ⏰ | []
C++ |

2.73 KB

|

None

|

0 👍

/

0 👎

/*
    CREATE TABLE IF NOT EXISTS `event_promo_code` (
        `id` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT,
        `nameid` SMALLINT(6) UNSIGNED NOT NULL DEFAULT '512',
        `amount` SMALLINT(6) UNSIGNED NOT NULL DEFAULT '1',
        `min_amount` SMALLINT(6) UNSIGNED NOT NULL DEFAULT '1',
        `max_amount` SMALLINT(6) UNSIGNED NOT NULL DEFAULT '1',
        `total` SMALLINT(6) UNSIGNED NOT NULL DEFAULT '1',
        PRIMARY KEY (`id`)
    ) ENGINE=MyISAM;
*/  
    
-   script  Sample#npc  FAKE_NPC,{
 
    OnInit:
        .minute = 30;
        .command$ = "claim";
        bindatcmd .command$,strnpcinfo(3)+"::OnAtcommand";
        
        setarray .announce$,    
            "This is promo code event.",
            "A promo code will be announced. ",
            "All you have to do is type the @"+.command$+" with the code given to claim the rewards",
            "First come first serve basis.",
            "Good luck, and event start now.";
        .announce_size = getarraysize( .announce$ );
        .npcname$ = strnpcinfo(0);
        end;
        
    OnAtcommand:
        if ( .status == 0 ) {
            dispbottom "Event isnt activated.";
        }
        else if ( .status == 1 ) {
            dispbottom "Event will begin shortly. Get ready.";
        }
        else if ( .status == 2 ) {
            .@aid = getcharid(3);
            
            if ( !.@atcmd_numparameters || .@atcmd_parameters$[0] != .code$ ) {
                mes "Please type: "+.@atcmd_command$+" '"+.code$+"'";
            }
            else if ( .total <= 0 ) {
                mes "You're too late. All reward has been claimed.";
            }
            else if ( compare( .player_check$,"#"+.@aid+"#" ) ) {
                mes "You already claimed the reward for this rounds.";
            }
            else {
                mes "You gained "+.amount+"x "+getitemname( .nameid );
                .total--;
                .player_check$ = .player_check$ + .@aid + "#";
                getitem .nameid,.amount;
                if ( .total <= 0 ) 
                    donpcevent .npcname$+"::OnEventEnd";
            }
            close;
        }
        end;
        
    OnMinute00: // start every hours
    OnEventStart:
        if ( !.status ) {
            .status = 1;
            .minute_left = .minute;
            .player_check$ = "#";
            for ( .@i = 0; .@i < .announce_size; .@i++ ) {
                announce "<PROMO CODE EVENT> "+.announce$[.@i],bc_all;
                sleep 5000;
            }
            query_sql( "SELECT `nameid`,`amount`,`min_amount`,`max_amount` FROM `event_promo_code`",.nameid,.amount,.min_amount,.max_amount,.total );
            .status = 2;
            .code$ = ""+rand( 1000000,MAX_ZENY );
            initnpctimer;
            announce "<PROMO CODE EVENT> Time Left : "+.minute_left+" minute(s) , use @"+.command$+" to claim the reward now.",bc_all;
        }
        end;
        
    OnTimer60000:
        .minute_left--;
        announce "<PROMO CODE EVENT> Time Left : "+.minute_left+" minute(s) , use @"+.command$+" to claim the reward now.",bc_all;
        setnpctimer 0,.npcname$;
        if ( .minute_left >= 0 ) end;
        
    OnEventEnd:
        stopnpctimer;
        .status = 0;
        announce "<PROMO CODE EVENT> Event ended, try again next time.",bc_all;
        end;
}

Comments