Jump to content

LatSo

Members
  • Posts

    296
  • Joined

  • Last visited

Posts posted by LatSo

  1. How to do a script that when a player catch a mob he will get something, for example cash point.

     

    For example I summon a mob in a map, when a player catch that mob he will get points. ( He will only get point if he catch the event summoned mobs )

  2. Try to do proper tabbing in that line

    Works perfectly in my server, rAthena latest revision.

     

    Also that script is made in eAthena emulator so I think it would also work in 3CeAM

  3. like the normal cashshop? I think cashshop npc for eA and rA is the same. Give it a try

     

    map,x,y,position    cashshop    NPC name    sprite,item id:prize

     

    Just replace the codes

  4. This maybe is what you need

     

    //===== eAthena Script =======================================
    //= eAthena PVP-Ladder
    //===== By: ==================================================
    //= Terces
    //===== Current Version: =====================================
    //= 1.7.2
    //===== Compatible With: =====================================
    //= Any Athena Version that has "for" implemented
    //===== Credits: =============================================
    //= The whole eAthena Board and the eAthena Chat
    //===== Notes: ===============================================
    //= Note 1:
    //= Experience gain works like this formula:
    //= ($@LadderLength-(<new position>-1))*$@LadderExp
    //= so if someone gets the first place he'll get
    //= $@LadderLength*$@LadderExp experience points.
    //============================================================
    //= Fixxed by Dante
    //= V1.7.2
    //= Hosted by Dant3 aka Dante
    //= HAFE FUN! READ THE TOPIC! IT DONT WORKS MAYBE ON OLDER REV
    //= LAST UPDATE: 12th,February.2008
    // Main Script - Terces (Main Thanks to Terces )
    // V1.7.0 - Dant3
    // v1.7.1 - AnnieRuRu
    // v1.7.2 - Dant3
    // v1.7.3 - Dant3
    // THIS SCRIPT WORKS ONLY ON THE NEW EATHENA REVISIONS! ENJOY!
     
    -    script    PVPLADDEROPTIONS    -1,{
    end;
    OnInit:
    // 0 = Disabled (NO)
    // 1 = Enable   (YES)
    set $@languageselect, 0;    //Enable/Disable language selection [English/German] (Default: 1)
    set $@LadderAnnounce, 1;    //Enable/Disable the announcement when a char reaches a new position in the ladder (Default: 1)
    set $@LadderLength, 30;        //Set the length of the Ladder [!Not higher than 128!] (Default: 30)
    set $@LadderSteps, 10;        //Set the views per page (Default: 10)set $@LadderExpGain, 1;        //Enable/Disable experience gain when reaching a new position in the ladder (*Note1)
    set $@LadderExp, 50;        //Set Experience gain value (*Note1)
    set $@LadderZenyGain, 0;    //Enable/Disable zeny gain when reaching a new position in the ladder
    set $@LadderZeny, 30000000;        //Set Zeny gain value 
    set $@LadderChatRoom, 0;    //Enable/Disable an Chat Room over the NPC with the message "PvP Ladder" (Users can not enter the Chat room) 
    set $@LadderAskLogin, 1;    //Enable/Disable that the NPC asks about the Broadcast when a Player logins / or  with the Npc Chat (0 = Login Ask , 1 = Npc Chat) Related: 0
    set $@LadderGM,    60;        //All GM LVL UNDER this value will show on the PvP Ladder (Over GM LVL: Not shown on Ladder | under GM LVL:  Shown on Ladder)
    set $@LadderGMMenu,    99;    //GM LVL that need for entering GM Menu
    }
     
    -    script    PVPLADDER    -1,{
    OnPCKillEvent:
    if ( getgmlevel() >= $@LadderGM ) end;
    if (terces_PVP_resets != $terces_PVP_resets) {
        dispbottom "Please relog your character, in order to get the correct kills for you in the PVP ladder.";
        dispbottom "Because a GM just reset the ladder.";
        end;
    }
    if ( killedrid == getcharid(3) ) {
        set PVPDeaths, PVPDeaths +1;
        set #PVPDeathsAccount, #PVPDeathsAccount +1;
        set @PVPDeathstoday, @PVPDeathstoday +1;
        end;
    }
    set $@PVPcounter,$@PVPcounter+1;
    set getd("$@PVPKill"+$@PVPcounter),getcharid(3);    //getd to avoid errors when more than 1 people kill someone
    attachrid(killedrid);
    set PVPDeaths,PVPDeaths+1;
    set @PVPDeathstoday,@PVPDeathstoday+1;
    set #PVPDeathsAccount,#PVPDeathsAccount+1;
    set getd("$@PVPkilledplayer"+$@PVPcounter+"$"), strcharinfo(0);    //again, getd to avoid possible glitches
    detachrid;
     
    attachrid(getd("$@PVPKill"+$@PVPcounter));
    CountKills:
        set PVPKills,PVPKills+1;
        set @PVPKillstoday,@PVPKillstoday+1;
        set #PVPKillsAccount,#PVPKillsAccount+1;
        setarray @playerstats[0],@PVPKillstoday,@PVPDeathstoday,PVPKills,PVPDeaths,#PVPKillsAccount,#PVPDeathsAccount;
     
    l_ladder:
        set @considerdeath,0;
        for (set @PosinLadder, 0; @PosinLadder < $@LadderLength; set @PosinLadder, @PosinLadder + 1){
            if (PVPKills >= $terces_PVP_kills[@PosinLadder]){    //Player deserves to be in the ladder
                //Check if Death plays a role on the position
                if ((PVPKills == $terces_PVP_kills[@PosinLadder]) && (PVPDeaths > $terces_PVP_deaths[@PosinLadder])) set @considerdeath,1; //Consider Deaths
                //Check if the player only topped his own scores
                if ($terces_PVP_names$[@PosinLadder] == strcharinfo(0)){
                    set $terces_PVP_kills[@PosinLadder],PVPKills;
                    set $terces_PVP_deaths[@PosinLadder],PVPDeaths;
                    end;
                }
                //Moves all characters in the Ladder
                for (set @beginmoving, $@LadderLength; @beginmoving >= (@PosinLadder+@considerdeath); set @beginmoving, @beginmoving - 1){
                    if ($terces_PVP_names$[@beginmoving] == strcharinfo(0)){
                        //If the player already is in the Ladder it only has to move players between characters new position and characters old position
                        callsub L_LadderMove,0;
                        end;
                    }
                    else if (@beginmoving == (@PosinLadder+@considerdeath)){
                        //Player is not in the Ladder and therefor it has to move all players from characters new position downwards
                        callsub L_LadderMove,1;
                        end;
                    }
                }
                end;
            }
        }
        end;
     
     
    L_LadderMove:
        if (getarg(0) == 0) set @length,@beginmoving;
        if (getarg(0) == 1) set @length,$@LadderLength;
        for (set @movecycle, @length; @movecycle > (@PosinLadder+@considerdeath);
         set @movecycle, @movecycle - 1){
     
            set $terces_PVP_names$[@movecycle],$terces_PVP_names$[(@movecycle-1)];
            set $terces_PVP_kills[@movecycle],$terces_PVP_kills[(@movecycle-1)];
            set $terces_PVP_deaths[@movecycle],$terces_PVP_deaths[(@movecycle-1)];
            set $terces_PVP_times[@movecycle],$terces_PVP_times[(@movecycle-1)];
        }
        //sets the character's stats in the new position
        set $terces_PVP_names$[(@PosinLadder+@considerdeath)],strcharinfo(0);
        set $terces_PVP_kills[(@PosinLadder+@considerdeath)],PVPKills;
        set $terces_PVP_deaths[(@PosinLadder+@considerdeath)],PVPDeaths;
        set $terces_PVP_times[(@PosinLadder+@considerdeath)],gettimetick(2);
        //Experience Gain
        if ($@LadderExpGain == 1){
            set BaseExp,BaseExp+(($@LadderLength-((@PosinLadder+@considerdeath)-1))*$@LadderExp);
            dispbottom "You have just been rewarded with "+(($@LadderLength-((@PosinLadder+@considerdeath)-1))*$@LadderExp)+" base experience points";
        }
        //Zeny Gain
        if ($@LadderZenyGain == 1){
            set Zeny,Zeny+(($@LadderLength-((@PosinLadder+@considerdeath)-1))*$@LadderZeny);
            dispbottom "You have just been rewarded with "+(($@LadderLength-((@PosinLadder+@considerdeath)-1))*$@LadderZeny)+" Zeny";
        }
        //Announcement (Setting for Char)
        if (pvpbroadcast == 2){
        announce strcharinfo(0)+" just claimed the "+((@PosinLadder+@considerdeath)+1)+". Position in the Top "+$@LadderLength+" after killing "+getd("$@PVPkilledplayer"+$@PVPcounter+"$")+".",16;
        }
        //Announcement (Setting for Account)
        if (#pvpbroadcast == 2){
        announce strcharinfo(0)+" just claimed the "+((@PosinLadder+@considerdeath)+1)+". Position in the Top "+$@LadderLength+" after killing "+getd("$@PVPkilledplayer"+$@PVPcounter+"$")+".",16;
        }
        end;
     
    OnPCLoginEvent:
    if (terces_PVP_resets != $terces_PVP_resets){
            set PVPDeaths,0;
            set @PVPDeathstoday,0;
            set #PVPDeathsAccount,0;
            set PVPKills,0;
            set @PVPKillstoday,0;
            set #PVPKillsAccount,0;
            set terces_PVP_resets,$terces_PVP_resets;
        }
    if ($@LadderAskLogin == 0){
        if (#pvpbroadcast == 2) goto L_ignore;
        if (pvpbroadcast == 2) goto L_ignore;
        if (#pvpbroadcast == 1) goto L_ignore;
        if (pvpbroadcast == 1) goto L_ignore;
     
        if (pvpbroadcast == 0)
        mes "Hi, "+strcharinfo(0)+"";
        mes "Me is the PvP Top Management!";
        mes "Let me ask you one Question and i will let you play!";
        menu "Later please",L_close,"Okay, fine",L_fine;
     
        L_fine:
        next;
        mes "Well, do you want read Broadcast Messages when a Player reach a new position on the PvP Ranglist?";
        menu "Yeah, why not",L_accept,"No, thanks",L_accept_2,"Wtf is Broadcast?",L_broadcast;
     
        L_accept:
        next;
        mes "Yay, thank you! ^_^";
        mes "Will this Setting work on all your Chars on this account or only this char?";
        menu "Account",L_account,"Only this char",L_char;
     
        L_account:
        set #pvpbroadcast,2;
        next;
        mes "Okay, "+strcharinfo(0)+"";
        mes "Thank you for your time and have fun!";
        close;
     
        L_char:
        set pvpbroadcast,2;
        next;
        mes "Okay, "+strcharinfo(0)+"";
        mes "Thank you for your time and have fun!";
        goto access_eng;
        close;
        
        L_accept_2:
        next;
        mes "Yay, thank you! ^_^";
        mes "Will this Setting work on all your Chars on this account or only this char?";
        menu "Account",L_account_2,"Only this char",L_char_2;
     
        L_close:
        close;
     
        L_account_2:
        set #pvpbroadcast,1;
        next;
        mes "Okay, "+strcharinfo(0)+"";
        mes "Thank you for your time and have fun!";
        close;
     
        L_char_2:
        set pvpbroadcast,1;
        next;
        mes "Okay, "+strcharinfo(0)+"";
        mes "Thank you for your time and have fun!";
        goto access_eng;
        close;
     
     
        L_broadcast:
        mes "Broadcasts are this yellow messages from  the GMs";
        goto L_fine;
        }
    }
     
    brasilis,261,322,3    script    PvP Ladder    57,{
    if ($@LadderChatRoom == 1) {
            waitingroom "PvP Top "+$@LadderLength+"",0;   // Look on the configuration!
    }
        set @name$,"[PvP-Ladder]";
        //Colour of:            Position    Name        Kills        Deaths        Time
        setarray @colour$[0],    "^996600",    "^006699",    "^00AA00",    "^FF0000",    "^EE8800";
    if ($@LadderAskLogin == 1){
        if (#pvpbroadcast == 2) goto     access_eng;
        if (pvpbroadcast == 2) goto     access_eng;
        if (#pvpbroadcast == 1) goto     access_eng;
        if (pvpbroadcast == 1) goto     access_eng;
        if (pvpbroadcast == 0)
        mes "Hi, "+strcharinfo(0)+"";
        mes "Me is the PvP Top Management!";
        mes "Let me ask you one Question and i will let you play!";
        menu "Later please",L_close,"Okay, fine",L_fine;
     
        L_fine:
        next;
        mes "Well, do you want read Broadcast Messages when a Player reach a new position on the PvP Ranglist?";
        menu "Yeah, why not",L_accept,"No, thanks",L_accept_2,"Wtf is Broadcast?",L_broadcast;
     
        L_accept:
        next;
        mes "Yay, thank you! ^_^";
        mes "Will this Setting work on all your Chars on this account or only this char?";
        menu "Account",L_account,"Only this char",L_char;
     
        L_account:
        set #pvpbroadcast,2;
        next;
        mes "Okay, "+strcharinfo(0)+"";
        mes "Thank you for your time and have fun!";
        close;
     
        L_char:
        set pvpbroadcast,2;
        next;
        mes "Okay, "+strcharinfo(0)+"";
        mes "Thank you for your time and have fun!";
        goto access_eng;
        close;
        
        L_accept_2:
        next;
        mes "Yay, thank you! ^_^";
        mes "Will this Setting work on all your Chars on this account or only this char?";
        menu "Account",L_account_2,"Only this char",L_char_2;
     
        L_close:
        close;
     
        L_account_2:
        set #pvpbroadcast,1;
        next;
        mes "Okay, "+strcharinfo(0)+"";
        mes "Thank you for your time and have fun!";
        close;
     
        L_char_2:
        set pvpbroadcast,1;
        next;
        mes "Okay, "+strcharinfo(0)+"";
        mes "Thank you for your time and have fun!";
        goto access_eng;
        close;
     
     
        L_broadcast:
        mes "Broadcasts are this yellow messages from  the GMs";
        goto L_fine;
    }
        access_eng:
        mes @name$;
        mes "Hello "+strcharinfo(0)+"...";
        mes "If you want to I can show you your PVP stats.";
        next;
        M_selection_eng:
        if ( getgmlevel () < $@LadderGMMenu )
            menu "Show me the PVP Ladder",M_Ladder_eng,"PvP stats since my login",M_seitLogin_eng,"PvP stats of this Char",M_dieserChar_eng,"Stats of the whole account",M_vomAccount_eng,"Cancel",M_abbrechen_eng;
        else
            menu "[GM MENU]",GMMenu,"[USER MENU]",UserMenu;
     
        UserMenu:
        menu "Show me the PVP Ladder",M_Ladder_eng,"PvP stats since my login",M_seitLogin_eng,"PvP stats of this Char",M_dieserChar_eng,"Stats of the whole account",M_vomAccount_eng,"Cancel",M_abbrechen_eng;
     
        GMMenu:
        mes "PVP Ladder Script";
        mes "Version: 1.7.3";
        mes "Status of functions: ";
        mes "Reset Ladder: No Bugs";
        mes "Delete Char on the ladder: BETA [Not working perfect]";
        menu "Reset Ladder",L_reset,"Delete a Char on the Ladder",L_del_char,"Cancel",M_abbrechen_eng;
     
        M_Ladder_eng:
        mes "Alright...I'll show you the Top "+ $@LadderLength +" with "+$@LadderSteps+" entries per page.";
        mes "It'll be viewed like this:";
        mes @colour$[0]+"Place^000000: "+@colour$[1]+"<name>^000000 :"+@colour$[2]+"<kills>^000000:"+@colour$[3]+"<deaths>^000000 "+@colour$[4]+"<time>";
        next;
        callsub L_Ladder;
        goto M_selection_eng;
     
        M_seitLogin_eng:
        mes @name$;
        mes "Your stats since your login:";
        mes @PVPKillstoday+"/"+@PVPDeathstoday+"(Kills/Deaths)";
        next;
        goto M_selection_eng;
     
        M_dieserChar_eng:
        mes @name$;
        mes "Your stats of this Char:";
        mes PVPKills+"/"+PVPDeaths+"(Kills/Deaths)";
        next;
        goto M_selection_eng;
     
        M_vomAccount_eng:
        mes @name$;
        mes "Your stats of the whole account:";
        mes #PVPKillsAccount+"/"+#PVPDeathsAccount+"(Kills/Deaths)";
        next;
        goto M_selection_eng;
     
        M_abbrechen_eng:
        mes @name$;
        mes "OK. You can come back to me and see your stats whenever you want.";
        close;
     
    L_del_char:
        if (getgmlevel() < 99) end;
        mes "Do you want to delete a char on the Ladder?";
        if (select ("Yes","No") == 2) goto L_end;
        next;
        mes "Please give me the Ladder Position of the Char";
        input $@CharLadderInput;
        set $@CharLadder, $@CharLadderInput;
        deletearray @PosinLadder, $@CharLadderInput;
        next;
        mes "THIS IS ONLY  BETA";
        mes "When this step has not worked PLEASE wait until the next Update for this script";
        mes "Please don't request support when this step has not worked";
        close;
     
    L_reset:
        if (getgmlevel() < 99) end;
        mes "Do you want to reset the ladder?";
        if (select ("Yes","No") == 2) goto L_end;
        mes "Are you really really sure you want to reset it?";
        menu "Yes, ffs!!",-,"No",L_end;
        deletearray $terces_PVP_kills,128;
        deletearray $terces_PVP_deaths,128;
        deletearray $terces_PVP_names$,128;
        deletearray $terces_PVP_times,128;
        set $terces_PVP_resets,$terces_PVP_resets +1;
     
        L_end:
        mes "Okay...cya";
        close;
        
        L_Ladder:
        for (set @y,0; @y < $@LadderLength; set @y,@y+$@LadderSteps){
            for (set @x,@y; (@x < (@y+$@LadderSteps)) && (@x < ($@LadderLength)); set @x,@x+1){
                if ($terces_PVP_names$[@x] != ""){
                    mes @colour$[0]+(@x+1)+"^000000: "+@colour$[1]+$terces_PVP_names$[@x]+"^000000 "+@colour$[2]+$terces_PVP_kills[@x]+"^000000:"+@colour$[3]+$terces_PVP_deaths[@x]+"^000000 ~ "+@colour$[4]+callfunc ("Gettime",$terces_PVP_times[@x])+"^000000";
                } else {
                    mes "^DD0000"+(@x+1)+": ^006699None^000000 ";
                }
            }
            next;
        }
        return;
    }
     
    function    script    Gettime    {
    if (getarg(0)==0) return;
     
    set @difftimedays,(gettimetick(2) - getarg(0));
    set @difftimehours,@difftimedays%86400;
    set @difftimeminutes,@difftimehours%3600;
    set @difftimeseconds,@difftimeminutes%60;
     
    set @days,@difftimedays/86400;
    set @hours,@difftimehours/3600;
    set @minutes,@difftimeminutes/60;
    set @seconds,@difftimeseconds;
    set @result$,"";
    if(@days != 0) set @result$,@result$+@days+"d ";
    if(@hours != 0) set @result$,@result$+@hours+"h ";
    if(@minutes != 0) set @result$,@result$+@minutes+"m ";
    if(@seconds != 0) set @result$,@result$+@seconds+"s";
     
    return (@result$);
    }
  5. Oh sorry, I must have missed that detail.

    Could you show your script, please?

    wait Ill change back to permanent variables again and ( changed it to temporary since I got this error/bug ) Ill message you the script in a while

  6. What variable is permanent global variable?

    I mean, I used

    $variable

    but my NPC can't ready it. I mean, for example When player X talks to NPC, $variable will be set to but when I try to check if $variable = 1 , it shows 0

     

    Basically my question is a global variable that will not delete when I reload my server or restart.

     

    Thanks!

×
×
  • Create New...