Jump to content
  • 0

Prevent LMS Script Bug


bdgro

Question


  • Group:  Members
  • Topic Count:  9
  • Topics Per Day:  0.00
  • Content Count:  37
  • Reputation:   0
  • Joined:  05/05/17
  • Last Seen:  

Hello there, I'm kinda new in scripting. So I would like to ask help for my script

This is a Last Man Standing script, the thing is some player like to bug it.

They click the npc, but not join/register. So when the npc is gone and another player that inside the game thinned out, they enter and ruin the game.

I would like to know how to add timer, so when you click the npc, you can only click it as long as 5 second and the npc talk box will be gone.

Or if you postpone registering, you will be teleported somewhere so the npc box will be gone too.

My english kinda bad, sorry for that.

Here is my script

Spoiler

prontera,153,232,5    script    LMS Manager    483,{

mes "[LMS Manager]";
mes "Hello What can I do for you?";
next;
menu "Register",-,"What is LMS?",what,"Leave",leave;
next;
mes "[LMS Manager]";
mes "Thank you for registering Mr. " + strcharinfo(0) + ", Have fun!";
close2;
npctalk ""+strcharinfo(0)+" has registered for the Last Man Standing.";
warp "pvp_n_7-5",103,99;
end;
what:
mes "[LMS Manager]";
mes "LMS is also known as Last Man Standing Event";
next;
mes "[LMS Manager]";
mes "LMS is also like a PvP.";
mes "The only difference is at LMS you will get 10 TCG if you are the Last Man Standing at the arena.";
next;
mes "[LMS Manager]";
mes "That's all";
close;
leave:
mes "[LMS Manager]";
mes "I hope you will register next time";
close;


OnClock0145:
OnClock0245:
OnClock0345:
OnClock0445:
OnClock0545:
OnClock0645:
OnClock0745:
OnClock0845:
OnClock0945:
OnClock1045:
OnClock1145:
OnClock1245:
OnClock1345:
OnClock1445:
OnClock1545:
OnClock1645:
OnClock1745:
OnClock1845:
OnClock1945:
OnClock2045:
OnClock2145:
OnClock2245:
OnClock2345:
OnMinute45:
enablenpc "LMS Manager";
delwaitingroom;
waitingroom "L.M.S. Registration",0;
pvpoff "pvp_n_7-5";
announce "LMS Manager: The Last Man Standing event will be starting shortly.",0;
sleep2 1000;
announce "LMS Manager: Those who want to play, please proceed to Prontera and Register.",0;
sleep2 1000;
announce "LMS Manager: After 1 Minute the Registration will close.",0;
sleep2 60000;
announce "LMS Manager: Please go to prontera and Register now if you want to join.",0;
disablenpc "Mr. Banker";
sleep2 1500;
announce "LMS Manager: Last 30 seconds.",0;
sleep2 30000;
announce "LMS Manager: If you want to join please Register in Prontera.",0;
sleep2 5000;
for( set .@s,10; .@s > 0 ; set .@s,.@s - 1 ){
announce "LMS Manager: "+.@s+" Seconds to go ~ Hurry Up !!",0;
sleep2 1000;
}
announce "LMS Manager: Time's up.",0;
delwaitingroom;
disablenpc "LMS Manager";
stopnpctimer;
pvpoff "pvp_n_7-5";
mapannounce "pvp_n_7-5","LMS Manager: The Last Man Standing Event will start shortly",0;
sleep2 1000;
if(getmapusers("pvp_n_7-5") == 1){
mapannounce "pvp_n_7-5","LMS Manager: Event Ended 1 Participant Only..",0;
pvpoff "pvp_n_7-5";
mapwarp "pvp_n_7-5","prontera",156,191;
stopnpctimer;
}
mapannounce "pvp_n_7-5","LMS Manager:But before we start this is just a few reminders..",0;
sleep2 1000;
mapannounce "pvp_n_7-5","LMS Manager: Only the Last Man Standing will win this event!!",0;
sleep2 1000;
mapannounce "pvp_n_7-5","LMS Manager: What are we waiting for?..Let's Get Ready to Rumble!!...",0;
sleep2 1000;
mapannounce "pvp_n_7-5","LMS Manager: Get ready at the count of 5 we will start!....",0;
sleep2 1000;
for( set .@s,5; .@s > 0; set .@s,.@s - 1 ){
mapannounce "pvp_n_7-5","LMS Manager: "+.@s+" Seconds to go ~ !!",0;
sleep2 1000;
}
pvpon "pvp_n_7-5";
enablenpc "Mr. Banker";
initnpctimer;
end;

OnTimer5000:
if(getmapusers("pvp_n_7-5") == 0){
Announce "Event Cancelled due to lack of participants.",0;
stopnpctimer;
}else if(getmapusers("pvp_n_7-5") == 1){
mapannounce "pvp_n_7-5","Mr. Banker: Please talk to me to get your prize..",0;
pvpoff "pvp_n_7-5";
stopnpctimer;
}else if(getmapusers("pvp_n_7-5") == 2){
mapannounce "pvp_n_7-5","Mr. Banker: Last 2 Brave warriors are still alive!",0;
initnpctimer;
}else if(getmapusers("pvp_n_7-5") > 2){ 
initnpctimer;
}
end;

OnInit:
disablenpc "Mr. Banker";
disablenpc "LMS Manager";
end;
}
//------------------------

//pvp_n_7-5,100,100,3    script    Checker    780,{

//mes "[Checker]";
//mes "Hi " + strcharinfo(0) + ", Want to check how many are you here?";
//next;
//mes "There are currently ["+getmapusers("pvp_n_7-5")+"]players on map";
//close;
//
//OnInit:
//waitingroom "Map Checker",0;
//end;
//}

//--------------------------

//--------------------------
pvp_n_7-5,99,100,3    script    Mr. Banker    56,{
if(getmapusers("pvp_n_7-5") > 1){
enablenpc "Mr. Banker";
npctalk "Only the last Survivor can talk with me.";
end;
}
mes "[banker]";
mes "Congrats. You've won.";
next;
announce "Mr. Banker: We have a winner! well done "+strcharinfo(0)+".",0;
getitem 6417, 3;
mes "You will return now";
close2;
warp "prontera",156,228;
disablenpc "Mr. Banker";
end;

OnInit:
while(1){
delwaitingroom;
waitingroom "["+getmapusers("pvp_n_7-5")+"] Participants ",0;
sleep 1000;
}
end;


OnPCDieEvent:
if( strcharinfo(3) != "pvp_n_7-5")end;
announce ""+strcharinfo(0)+" died, and out of the game!.",bc_all;
sleep2 100;
warp "prontera",156,191;
end;

}


// == Mapflags
pvp_n_7-5    mapflag    pvp
pvp_n_7-5    mapflag    nowarp
pvp_n_7-5    mapflag    nowarpto
pvp_n_7-5    mapflag    noteleport
pvp_n_7-5    mapflag    nosave
pvp_n_7-5    mapflag    nomemo
pvp_n_7-5    mapflag    nobranch
pvp_n_7-5    mapflag    pvp_noparty
pvp_n_7-5    mapflag    pvp_noguild

////////////////
-    script    dualclientkicker    -1,{
OnPCLoadMapEvent:
    set .@charmap$, strcharinfo(3);
    query_sql("SELECT FIND_IN_SET('"+.@charmap$+"', '"+.maps$+"');",.@q);
    if(.@charmap$!=.tmp$[(.@q-1)]) end;
    set .@len, query_sql("SELECT DISTINCT `account_id` FROM `char` WHERE `account_id` IN (SELECT `account_id` FROM `login` WHERE `last_ip` = (SELECT `last_ip` FROM `login` WHERE `account_id`="+getcharid(3)+")) AND `online` <> 0;",.@a);
    if(.@len-1) {
        for(set(.@d,0);.@d<.@len;set(.@d,.@d+1)) {
            getmapxy(.@map$,.@x,.@y,0,rid2name(.@a[.@d]));
            if(.tmp$[(.@q-1)]==.@map$&&rid2name(.@a[.@d])!=strcharinfo(0)) {
                dispbottom "Duel accounts not allowed in LMS.";
                warp "geffen",0,0;
            }
        }
    }
    end;
    
OnInit:
    set        .maps$  ,    "pvp_n_7-5";
    explode(   .tmp$   ,    .maps$, ",")                                  ;
    set        .lens   ,    getarraysize(.tmp$)                           ;
    for(set .a,0;.a<.lens;set .a,.a+1)
        setmapflag .tmp$[.a],    mf_loadevent ;
}

lms.txt

 

Edited by bdgro
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

  • Group:  Forum Moderator
  • Topic Count:  93
  • Topics Per Day:  0.02
  • Content Count:  10015
  • Reputation:   2348
  • Joined:  10/28/11
  • Last Seen:  

try this, it should be able to avoid your player from exploiting it.

https://pastebin.com/jek6CMUk

just add an extra variable to save the state to enable/disable warping into the map.

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  34
  • Topics Per Day:  0.01
  • Content Count:  281
  • Reputation:   14
  • Joined:  10/14/13
  • Last Seen:  

@bdgro Kindly look for this part of your script:

mes "[LMS Manager]";
mes "Thank you for registering Mr. " + strcharinfo(0) + ", Have fun!";
close2;
npctalk ""+strcharinfo(0)+" has registered for the Last Man Standing.";
warp "pvp_n_7-5",103,99;
end;

 

and change it to:

mes "[LMS Manager]";
mes "Thank you for registering Mr. " + strcharinfo(0) + ", Have fun!";
sleep2 1000;
npctalk strcharinfo(0)+" has registered for the Last Man Standing.";
warp "pvp_n_7-5", 103, 99;
end;

 

I hope that solves your problem, good luck! ;)

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  9
  • Topics Per Day:  0.00
  • Content Count:  37
  • Reputation:   0
  • Joined:  05/05/17
  • Last Seen:  

 

On 10/6/2017 at 1:02 AM, Aureon said:

@bdgro Kindly look for this part of your script:


mes "[LMS Manager]";
mes "Thank you for registering Mr. " + strcharinfo(0) + ", Have fun!";
close2;
npctalk ""+strcharinfo(0)+" has registered for the Last Man Standing.";
warp "pvp_n_7-5",103,99;
end;

 

and change it to:


mes "[LMS Manager]";
mes "Thank you for registering Mr. " + strcharinfo(0) + ", Have fun!";
sleep2 1000;
npctalk strcharinfo(0)+" has registered for the Last Man Standing.";
warp "pvp_n_7-5", 103, 99;
end;

 

I hope that solves your problem, good luck! ;)

Thank you for sharing your knowledge!

Unfortunately it still doesn't work, so I decide to delete the registration phase and when player click the npc, they simply enter the arena without confirmation~

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  9
  • Topics Per Day:  0.00
  • Content Count:  37
  • Reputation:   0
  • Joined:  05/05/17
  • Last Seen:  

oh thanks a lot @Emistry !, sorry late reply

Edited by bdgro
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...