viewing paste topic/11035- poring_catcher_1.2 | Athena

Posted on the | Last edited on
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
prontera,156,184,3  script  Poring Catcher Warper   1_SHADOW_NPC,{
    mes "Do you want to join the Poring Catcher Event?";
    select ( "Yes" );
    warp getvariableofnpc( .eventmap$, "poring_catcher" ), rand(102,104), 101;;
    end;
}
 
-   script  poring_catcher  FAKE_NPC,{
OnInit:
    .eventlasting = 30*60; // how many seconds the event will last ? default : 30*60 = 30 minutes
    .gmsetting = 60; // in which level the GMs can start this event ? The GM can end the event faster by killing porings without getting freeze
    .fakes = 3; // spawn the fake poring = .fakes * 12 types * number of players in the maps
    .eventmap$ = "poring_w01"; // the name of the map where the event runs
    
    setarray .rewardwin, 501, 10,
                        502, 10; // edit the reward items here
 
    .onesec = 1000; // for debug purpose only, set to 100 to make announcement faster
 
    bindatcmd "poring_catcher", strnpcinfo(0)+"::OnStart", .gmsetting, 100;
    .rewardwinsize = getarraysize( .rewardwin );
    getmapxy .map$, .x, .y, 1, "Poring Catcher Warper";
    mapwarp .eventmap$, .map$, .x, .y;
    disablenpc "Poring Catcher Warper";
    setarray .@mapflag,
        mf_nopenalty,
        mf_nomobloot,
        mf_nomvploot,
        mf_noskill,
        mf_nowarpto,
        mf_noteleport,
        mf_nomemo,
        mf_nosave,
        mf_nobranch,
        mf_nodrop;
    .@mapflagsize = getarraysize( .@mapflag );
    for ( .@i = 0; .@i < .@mapflagsize; .@i++ )
        setmapflag .eventmap$, .@mapflag[.@i];
    end;
OnStart:
OnClock0705: // put all the start timer here
OnClock1105:
OnClock1905:
OnClock2305:
    enablenpc "Poring Catcher Warper";
    announce "Poring Catcher Event: We are going to have a Poring Catcher Event",bc_all,0xFF7F50;
    sleep 1 * .onesec;
    announce "Poring Catcher Event: For those who want to join, please come to Prontera!",bc_all,0xFF7F50; //Edit to where would you place the warper
    sleep 1 * .onesec;
    announce "Poring Catcher Event: The Warper would be open for 1 minute",bc_all,0xFF7F50;
    sleep 30 * .onesec;
    announce "Poring Catcher Event: Last 30 Seconds.",bc_all,0xFF7F50;
    sleep 30 * .onesec;
    announce "Poring Catcher Event: Warper Closed.",bc_all,0xFF7F50;
    disablenpc "Poring Catcher Warper";
    if ( !getmapusers( .eventmap$ ) )
        end;
    mapannounce .eventmap$,"We are about to start the Poring Catcher Event.",bc_blue;
    sleep 1 * .onesec;
    mapannounce .eventmap$,"Rules are simple:",bc_blue;
    sleep 1 * .onesec;
    mapannounce .eventmap$,"In a few seconds I'm going to spawn tons of porings..",bc_blue;
    sleep 1 * .onesec;
    mapannounce .eventmap$,"..All you need to do is kill the Poring with the right name..",bc_blue;
    sleep 1 * .onesec;
    mapannounce .eventmap$,"..Which would be Poring.",bc_blue;
    sleep 1 * .onesec;
    mapannounce .eventmap$,"If you kill the wrong one, you will be freeze for seconds!",bc_blue;
    sleep 3 * .onesec;
    mapannounce .eventmap$,"That's it.. Now let's get this on!",bc_blue;
    sleep 3 * .onesec;
    mapannounce .eventmap$,"Ready...",bc_blue;
    sleep 1 * .onesec;
    mapannounce .eventmap$,"Get Set..",bc_blue;
    sleep 1 * .onesec;
    mapannounce .eventmap$,"Go!",bc_blue;
    sleep 1 * .onesec;
    areamonster .eventmap$,95,108,113,87,"Poring",1002,1, strnpcinfo(0)+"::OnCorrectKilled";
    .@amount = .fakes * getmapusers(.eventmap$);
    areamonster .eventmap$,95,108,113,87,"Poking",1002,.@amount, strnpcinfo(0)+"::OnFakeKilled";
    areamonster .eventmap$,95,108,113,87,"Poiring",1002,.@amount, strnpcinfo(0)+"::OnFakeKilled";
    areamonster .eventmap$,95,108,113,87,"Poling",1002,.@amount, strnpcinfo(0)+"::OnFakeKilled";
    areamonster .eventmap$,95,108,113,87,"Porng",1002,.@amount, strnpcinfo(0)+"::OnFakeKilled";
    areamonster .eventmap$,95,108,113,87,"pH0ur1n6",1002,.@amount, strnpcinfo(0)+"::OnFakeKilled";
    areamonster .eventmap$,95,108,113,87,"P0ring",1002,.@amount, strnpcinfo(0)+"::OnFakeKilled";
    areamonster .eventmap$,95,108,113,87,"Porong",1002,.@amount, strnpcinfo(0)+"::OnFakeKilled";
    areamonster .eventmap$,95,108,113,87,"Powing",1002,.@amount, strnpcinfo(0)+"::OnFakeKilled";
    areamonster .eventmap$,95,108,113,87,"Poriing",1002,.@amount, strnpcinfo(0)+"::OnFakeKilled";
    areamonster .eventmap$,95,108,113,87,"Boring",1002,.@amount, strnpcinfo(0)+"::OnFakeKilled";
    areamonster .eventmap$,95,108,113,87,"Lolwut!?",1002,.@amount, strnpcinfo(0)+"::OnFakeKilled";
    areamonster .eventmap$,95,108,113,87,"Kill me to win!",1002,.@amount, strnpcinfo(0)+"::OnFakeKilled";
    sleep .eventlasting * 1000;
    if ( getstrlen(.winner$) )
        announce .winner$ +" won the Poring Catcher Event!",bc_all,0xFF7F50;
    else if ( getmapusers( .eventmap$ ) )
        announce "No one won the Poring Catcher Event!",bc_all,0xFF7F50;
    killmonsterall .eventmap$;
    sleep 5000;
    mapwarp .eventmap$, .map$, .x, .y;
    .winner$ = "";
    end;
OnCorrectKilled:
    for ( .@i = 0; .@i < .rewardwinsize; .@i += 2 )
        getitem .rewardwin[ .@i ], .rewardwin[ .@i +1 ];
    .winner$ = strcharinfo(0);
    awake strnpcinfo(0);
    end;
OnFakeKilled:
//  dispbottom "You killed the wrong Poring! Yerrrrrrrrrrrr out!";
//  warp .map$, .x, .y;
//  if ( !getmapusers( .eventmap$ ) ) goto OnEnd;
    dispbottom "You killed the wrong Poring!";
    sc_start2 SC_FREEZE, 9000,0,10000; // 9 seconds to freeze
//  sc_start2 SC_STONE, 9000,0,10000;
//  sc_start2 SC_STUN, 9000,0,10000;
//  sc_start2 SC_SLEEP, 9000,0,10000;
    end;
}
Viewed 1422 times, submitted by AnnieRuru.