Jump to content

Neffletics

Members
  • Content Count

    65
  • Joined

  • Last visited

  • Days Won

    5

Posts posted by Neffletics


  1. For a server with 100 players where most players are vending or sitting in town, you'd be spending approximately $20-40 per month. Most of these budget hosting have low port speed which makes it vulnerable to network stress.

    Later on, if your server grows. You'd need at least 500 mbps port speed (ideal is 1 gbps dedicated port speed).

    As for your other question, Gepard is the only option. But, most cheat tools are now going through the memory. So, even if you have Gepard Shield in your server, it won't guarantee effectiveness.


  2. I changed the time slots to be in 30-minute intervals rather than hourly increments.

    Here's the code. I haven't tested it. Please let us know if it works. ~

    case 1:
    			mes "[New Session]";
    			if (.Size > 127) {
    				mes "You have already reached the maximum of 32 sessions.";
    				next;
    				break;
    			}
    			mes "Select a day.";
    			next;
    			set .@day, select(" ~ "+implode(.Days$,": ~ "))-1;
    			mes "[New Session]";
    			mes "Select a start time for ^0055FF"+.Days$[.@day]+"^000000.";
    			next;
    			set .@menu$,"";
    			for(set .@i,0; .@i<47; set .@i,.@i+2)
    				set .@menu$, .@menu$+" ~ "+Add_Zero(floor(.@i/2),1)+":"+Add_Zero((.@i%2)*30,2)+":";
    			set .@start, select(.@menu$)-1;
    			mes "[New Session]";
    			mes "Select an end time for ^0055FF"+.Days$[.@day]+"^000000.";
    			next;
    			set .@menu$,"";
    			for(set .@i,.@start+1; .@i<48; set.@i,.@i+2)
    				set .@menu$, .@menu$+" ~ "+Add_Zero(floor(.@i/2),1)+":"+Add_Zero((.@i%2)*30,2)+":";
    			set .@end, select(.@menu$)+.@start;
    			for(set .@i,0; .@i<.Size; set .@i,.@i+4)
    				if (.@day == $WOE_CONTROL[.@i] &&
    				   ((.@start >= $WOE_CONTROL[.@i+1] && .@start < $WOE_CONTROL[.@i+2]) ||
    				    (.@end > $WOE_CONTROL[.@i+1] && .@end <= $WOE_CONTROL[.@i+2]) ||
    				    (.@start <= $WOE_CONTROL[.@i+1] && .@end >= $WOE_CONTROL[.@i+2]))) {
    					mes "[New Session]";
    					mes "The chosen times overlap with an existing session.";
    					next;
    					set .@d,1;
    					break;
    				}
    			if (.@d) { set .@d,0; break; }



     


  3. On 10/8/2020 at 11:50 PM, sustagen said:

    hello po newbie lang gusto po sana namin nang friend ko gumawa nang server , 0 knowledge pa po kami gusto namin from scratch talaga gumawa nang server. Ano pong best way para maging smooth yung pag dedev namin. 
    1. 2 po kami gusto mag dev ,kapag mag eedit kami nang files ano pong best way para maging synchronize yung mga files namin? 
    2. ok lang po ba offline mode muna para magtest at mag edit nang mga items? paano po kami magkikita online para mag test nang sabay?

    1. Gamit kayo ng version control platforms like Github, Gitlab, Bitbucket, etc. 
    2. Bumili kayo ng cheap na VPS, tipong worth USD 1-5 lang per month tapos doon ninyo i-host test environment ninyo. May mga plugins sa VSCode na mag-automatic sync ng changes from editor to your VPS para dire-diretso kayo ng gawa.


  4. This is the first time I've seen this post. As a way of saying thank you to Herc, I'll be donating on a regular basis. This is the emulator that we've been using for SolaceRO.

    Thanks for your dedication! 

    Update: I just realized, my payment was declined. Not sure if this is connected with the situation in Eastern Europe. Sucks, I don't have crypto.


  5. Too lazy to understand the whole script, but please try adding this below the line with getitem.

     

    if (.@rand <= 3) {
    	announce(strcharinfo(PC_NAME)+" got "+ getd( ".p"+ .@s +"["+( 1+3*.@r -1 )+"]" ) +" "+ getitemname( getd( ".p"+ .@s +"["+ (1+ 3*.@r -2) +"]" ) ) +"!", bc_blue|bc_all);
    }

     


  6. 13 hours ago, Azhura said:

    Do we have a log of skill usage or item usage where we can check if a player uses a no delay program? I currently using gepard shield but it seems like some players can bypass it.


    You have to write it yourself. I manually applied hard delays in my server; it counts the animation speed as well.


  7. Update: setarray .@rewardablejobs[0] and change the jobs there to Job_Whitesmith, Job_Creator, Job_Sniper, etc. (reference: doc/const.txt)


    Then change the coordinate of the training grounds NPC.

    P.S. Untested, I just wrote it from my phone. I wrote it in a simple manner, please learn from the changes I made.

    ///////////////////////////////////////////////////////
    //  ___________               _____.__                
    //  \__    ___/__.__.________/ ____\__| ____    ____  
    //    |    | <   |  |\_  __ \   __\|  |/    \  / ___\ 
    //    |    |  \___  | |  | \/|  |  |  |   |  \/ /_/  >
    //    |____|  / ____| |__|   |__|  |__|___|  /\___  / 
    //            \/       Scripts             \//_____/  
    //
    //=====================================================
    // Name: Race to Max Level
    //
    // Description:
    // This NPC allows for Game Masters to set a reward to
    // be given to the first player of each 2nd class that
    // reaches maximum level (base and class).
    //=====================================================
    ///////////////////////////////////////////////////////
    new_1-1,111,111,4	script	Race to 99#reg	58,{
     	mes "[Race to 99]";
      	mes "Would you like to join the race to 99 event?";
      	switch(select("Yes.","Leave him alone.")) {
          case 1:
            mes "[Race to 99]";
            mes "Okay, you're in!";
            set RaceParticipate,1;
            close;
            
          case 2:
            mes "[Race to 99]";
            mes "Okay, that sucks.";
            close;
        }
    }
    
    
    prontera,147,180,5	script	Race to Max Level	58,{
    	set .@gm_level, 99; // GM level required to set the reward
    	set .@maxbase, 99;
    	set .@maxjob, 50;
    	set .@defaultreward, 510;
    	setarray .@rewardablejobs[0], Job_Knight, Job_Alchemist, Job_Assassin, Job_Bard, Job_Blacksmith, Job_Crusader, Job_Dancer, Job_Hunter, Job_Monk, Job_Priest, Job_Rogue, Job_Sage, Job_Wizard;
    	
    	Begin:
    	clear;
      	if (RaceReward == 1) {
        	mes "[ ^0099ccRace to Max Level^000000 ]";
          	mes "You have already received your reward.";
          	close;
        }
     	
      	if (RaceParticipate != 1) {
         	mes "[ ^0099ccRace to Max Level^000000 ]";
          	mes "You're not a participant of this event.";
          	close;
        }
    	mes "[ ^0099ccRace to Max Level^000000 ]";
    	mes "Hello, " + ((getgmlevel() >= .@gm_level) ? "master! What do you want to do today?" : "are you here for your reward?");
    	switch(select(((getgmlevel() >= .@gm_level) ? "Set Reward:Restart Race" : ":") + ":YES!:...Reward?:Who was rewarded?:Cancel")) {
    		case 1:
    			goto SetReward;
    		case 2:
    			goto RestartRace;
    		case 3:
    			goto GetReward;
    		case 4:
    			goto ExplainRace;
    		case 5:
    			goto ShowRewarded;
    		default:
    			end;
    	}
    	
    	SetReward:
    		clear;
    		mes "[ ^0099ccRace to Max Level^000000 ]";
    		if ($reward == 0)
    			set $reward, .@defaultreward;
    		mes "The reward is " + getitemname($reward) + " (ID: " + $reward + ").";
    		mes "Do you want to change it?";
    		if (select("Yes:No") == 1) {
    			clear;
    			mes "[ ^0099ccRace to Max Level^000000 ]";
    			mes "Please enter the new reward item ID.";
    			input .@rewardid;			
    			clear;
    			mes "[ ^0099ccRace to Max Level^000000 ]";
    			mes "Set " + getitemname(.@rewardid) + " as the reward?";
    			if(select("Yes:No") == 1) {
    				set $reward, .@rewardid;
    			}
    		}
    		goto Begin;
    	
    	RestartRace:
    		clear;
    		mes "[ ^0099ccRace to Max Level^000000 ]";
    		mes "Are you sure you want to restart the race?";
    		if (select("Yes:No") == 1) {
    			for (.@i = 0; .@i < getarraysize(.@rewardablejobs); .@i++) {
    				set $rewarded$[.@rewardablejobs[.@i]], "";
    			}
    			announce "The Race to Max Level has begun! Claim a reward once you reach " + .@maxbase + " base and " + .@maxjob + " class!", bc_all;
    		}
    		goto Begin;
    	
    	GetReward:
    		mes "Let's see... " + strcharinfo(0) + ", huh?";
      		if (Upper != 1) {
            	mes "You're not a rebirth class. You're not qualified";
              	close;
            }
    		
    		set .@competitioner, 0;
    		for (.@i = 0; .@i < getarraysize(.@rewardablejobs); .@i++) {
    			if (Class == .@rewardablejobs[.@i]) {
    				set .@competitioner, 1;
    				if (BaseLevel < .@maxbase || JobLevel < .@maxjob) {
    					mes "I'm sorry, but you still need to level a bit more.";
    				} else if ($rewarded$[Class] == strcharinfo(0)) {
    					mes "You have already claimed your reward.";
    				} else if ($rewarded$[Class] != "") {
    					mes "Too late!";
    					mes "The reward for " + jobname(Class) + " was already claimed by " + $rewarded$[Class] + ".";
    				} else goto GiveReward;
    			}
    		}
    		if (.@competitioner == 0)
    			mes "You need to change your job.";
    		close;
    	
    	GiveReward:
    		set $rewarded$[Class], strcharinfo(0);
      		set RaceReward, 1;
    		clear;
    		mes "[ ^0099ccRace to Max Level^000000 ]";
    		mes "Congratulations! You were the first " + jobname(Class) + " to reach " + .@maxbase + " base and " + .@maxjob + " class!";
    		getitem $reward, 1;
    		announce strcharinfo(0) + " (" + jobname(Class) + ") reached Max. Level and received " + getitemname($reward) + "!", bc_all;
    		close;
    	
    	ExplainRace:
    		clear;
    		mes "[ ^0099ccRace to Max Level^000000 ]";
    		mes "Yes! When you reach the maximum level for your class, talk to me and you'll be rewarded with a special item.";
    		next;
    		goto Begin;
    		
    	ShowRewarded:
    		clear;
    		mes "[ ^0099ccRace to Max Level^000000 ]";
    		for (.@i = 0; .@i < getarraysize(.@rewardablejobs); .@i++) {
    			mes jobname(.@rewardablejobs[.@i]) + ": " + (($rewarded$[.@rewardablejobs[.@i]] != "") ? $rewarded$[.@rewardablejobs[.@i]] : "^ff0000Nobody^000000");
    		}
    		next;
    		goto Begin;
    }



     

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.