Jump to content

ryzenthird

Donators
  • Posts

    23
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by ryzenthird

  1. Try this

     

    -	script	SelectRate	-1,{
    
    OnPCLoginEvent:
    	if(!server_preferred_rate){
    		mes "Select Your Preferred Server Rates";
    		switch(select("High Rate:Mid Rate:Low Rate")){
    			case 1:
    				mes "Thank you for choosing!";
    				set server_preferred_rate,1;
    				close;
    			case 2:
    				mes "Thank you for Choosing!";
    				set server_preferred_rate,2;
    				close;
    			case 3:
    				mes "Thank you for Choosing!";
    				set server_preferred_rate,3;
    				close
    			default:
    				mes "Please relogin to choose!";
    				close;
    		}	
    	}
    
    OnShowStatistics:
    	query_sql("SELECT COUNT(*) FROM char_reg_num WHERE `key` = 'server_preferred_rate' AND `value` = 1",.@highratecount);
    	query_sql("SELECT COUNT(*) FROM char_reg_num WHERE `key` = 'server_preferred_rate' AND `value` = 2",.@midratecount);
    	query_sql("SELECT COUNT(*) FROM char_reg_num WHERE `key` = 'server_preferred_rate' AND `value` = 3",.@lowratecount);
    	mes "This is the current statistics";
    	mes "High Rate Count : ("+.@highratecount+")";
    	mes "Mid Rate : ("+.@midratecount+")";
    	mes "Low Rate : ("+.@lowratecount+")";
    	close;
    
    OnInit:
    	bindatcmd("showstatistics",strnpcinfo(3)+"::OnShowStatistics",99,99);
    	end;
    	
    }

     

  2. Total Silver Coin Farmed in the whole server?

    query_sql("SELECT SUM(points) FROM table_name",.@sumpoints); // This would add all the points in the server or you could modify this to sum/add all silver coined farmed in the server like if its in inventory it should be 

    query_sql("SELECT COUNT(*) FROM inventory WHERE item_id = silver_coin_item_id",.@total_silver_coined_farmed);

    so it should be

    set .@total,(.@total_silver_coined_farmed * 5) / 100; 

  3. its pretty easy to code your own zeny to pod converter..

    try this
     

    prontera,150,150,4	script	Zeny To Pods	E_PORING,{
    	
    	.@total_pods_can_get = zeny / .pods_price;
    	mes "[Zeny to pods]";
    	mes "("+callfunc("F_InsertComma",.pods_price)+"z) for 1 pod";
    	mes "You can get ("+.@total_pods_can_get+") pods with your current zeny";
    	next;
    	switch(select("Zeny to Pods:Cancel")){
    		case 1:
    			if(.@total_pods_can_get){
    				input(.@convert,0,.@total_pods_can_get);
    				if(.@convert > .@total_pods_can_get){
    					mes "Sorry but you cannot convert that many PODS with your current zeny";
    					close;
    				}else if(!.@convert){
    					mes "Sorry but you do not input any amount";
    					close;
    				}else if(!checkweight(7179,.@convert)){
    					mes "Sorry but you cannot hold that many PODS with your current inventory weight";
    					close;
    				}else{
    					mes "You want to convert your zeny to "+.@convert+" PODS Right?";
    					switch(select("Yes:No")){
    						case 1:
    							set zeny,zeny-(.@convert * .pods_price);
    							getitem 7179,.@convert;
    							mes "Thank you for converting ("+.@convert+") PODS ";
    							close;
    						default:
    							close;
    					}
    					close;
    				}
    			}else{
    				mes "Sorry but you do not have enough zeny to convert to pods";
    				close;
    			}
    			
    		default:
    			close;
    	}
    OnInit:
    	set .pods_price,100000;
    	end;
    }

     

  4. Mir 4 Inspired Mining Script



    Config in OnInit :

        setarray .reward_id,969,677; // Item ID Rewards
        set .mineral_count,50; // How many Mineral (*PS : Need to duplicate npc see the bottom script) <-- THIS IS NOT NEEDED IN v1.0.1 
        set .mining_time,10; // How many Seconds to Mine

    In v1.0.1 there will be a new command "@startming" you need to run this command 1 time then until you "@reloadscript" or server restart the mining will run correctly ?


     

    • Upvote 1
  5. prontera,150,173,4	script	VIP Central	E_PORING,{
    
    	mes .npc_name$;
    	if(vip_status(1)){
    		mes "^008affYour VIP access will expire on " + callfunc("Time2Str",vip_status(2)) + ".^000000";
    	}
    	mes "Welcome "+strcharinfo(0)+",";
    	mes "How can i help you?";
    	next;
    	switch(select("Warp Central VIP:"+(vip_status(1)?"Extend VIP Status":":VIP 1:VIP 2:VIP 3"))){
    		case 1:
    			mes .npc_name$;
    			if(!vip_status(1)){
    				mes "Excuse me! Access to VIP Central is only allowed to ^008affVIP^000000 players.";
    				mes "-----------------------------------";
    				mes "Visit our website and learn how to become a ^008affVIP^000000 player.";
    				mes "-----------------------------------";
                    		close;
    			}
    			warp .map$,.cord[0],.cord[1];
    			end;
    		case 2:
    			mes .npc_name$;
    			mes "You want to extend your vip status";
    			break;
    		case 3:
    			mes .npc_name$;
    			mes "You selected VIP 1 (7 Days)";
    			explode(.item_info$,.item_ids$[0],":");
    			mes "The Item requirements is : "+getitemname(atoi(.item_info$[0]))+" - ("+atoi(.item_info$[1])+")";
    			next;
    			switch(select("Purchase:Cancel")){
    				case 1:
    					mes .npc_name$;
    					if(countitem(atoi(.item_info$[0])) < atoi(.item_info$[1])){
    						mes "You do not have enough items to buy this Subscription";
    						close;
    						end;
    					}
    
    					delitem atoi(.item_info$[0]),atoi(.item_info$[1]);
    					vip_time(.vip_day[0] * 1440);
    					mes "Congrats you are now a vip";
    					close;
    					end;
    				default:
    					close;
    					end;
    			}
    			break;
    		case 4:
    			mes .npc_name$;
    			mes "You selected VIP 2 (14 Days)";
    			explode(.item_info$,.item_ids$[1],":");
    			mes "The Item requirements is : "+getitemname(atoi(.item_info$[0]))+" - ("+atoi(.item_info$[1])+")";
    			next;
    			switch(select("Purchase:Cancel")){
    				case 1:
    					mes .npc_name$;
    					if(countitem(atoi(.item_info$[0])) < atoi(.item_info$[1])){
    						mes "You do not have enough items to buy this Subscription";
    						close;
    						end;
    					}
    
    					delitem atoi(.item_info$[0]),atoi(.item_info$[1]);
    					vip_time(.vip_day[1] * 1440);
    					mes "Congrats you are now a vip";
    					close;
    					end;
    				default:
    					close;
    					end;
    			}
    			break;
    		case 5:
    			mes .npc_name$;
    			mes "You selected VIP 3 (30 Days)";
    			explode(.item_info$,.item_ids$[2],":");
    			mes "The Item requirements is : "+getitemname(atoi(.item_info$[0]))+" - ("+atoi(.item_info$[1])+")";
    			next;
    			switch(select("Purchase:Cancel")){
    				case 1:
    					mes .npc_name$;
    					if(countitem(atoi(.item_info$[0])) < atoi(.item_info$[1])){
    						mes "You do not have enough items to buy this Subscription";
    						close;
    						end;
    					}
    
    					delitem atoi(.item_info$[0]),atoi(.item_info$[1]);
    					vip_time(.vip_day[2] * 1440);
    					mes "Congrats you are now a vip";
    					close;
    					end;
    				default:
    					close;
    					end;
    			}
    			break;
    	}
    	close;
    
    OnInit:
    	setarray .item_ids$[0],"501:2","502:3","503:3";
    	set .npc_name$,"[^FF7F00 VIP Central ^000000]";
    	set .map$,"sec_in02";
    	setarray .cord,130,161;
    	setarray .vip_day,7,14,30;
    	if(!.waitingroom){
    		waitingroom "VIP Central",0;
    		.waitingroom = 1;
    	}
    	end;
    }
    
    

    Try this ? 

  6. -    script    promoclaim    -1,{
    
    
    OnInit:
        bindatcmd "claim",strnpcinfo(3)+"::OnClaim";
        bindatcmd "code",strnpcinfo(3)+"::OnEditCode";
        end;
        
    OnClaim:
        // if ( getgmlevel() ) end;
        mes "^FF0000 Enter the Promo Code.";
        input .@pc$;
        close2;
        
        query_sql "SELECT `nameid`, `amount` FROM `reward_codes` WHERE `code` = '" + escape_sql(.@pc$) + "'", .@item, .@amt;
        query_sql "SELECT count(*) FROM `rewardlogs` WHERE `code` = '"+ escape_sql(.@pc$) + "' AND `ip_address` = '"+getcharip(strcharinfo(0))+"', .@ipcheck;
        if ( !.@item && !.@ipcheck ) 
            dispbottom "Either invalid code or the code is already Expired";
        else {
            getitem .@item, .@amt;
            dispbottom "Promotional code successfully redeemed.";
            //query_sql "DELETE FROM `reward_codes` WHERE `code` = '" + escape_sql(.@pc$) + "'";
            query_logsql "INSERT INTO `rewardlogs` VALUES ( '" + getcharid(3) + "', '" + escape_sql(.@pc$) + "','"+getcharip(strcharinfo(0))+"', NOW() )"; // ADD IP ADDRESS WHEN CLAIMED IN rewardlogs then
        }
        
        end;
        
    OnEditCode:
        if ( getgmlevel() < 99 ) end;
        set .@choice$, "Setup a new promotional code:View existing codes:Delete exisiting codes:Cancel";
        setarray .@length, 4,10; // <min>,<max>
        
        switch ( select( .@choice$ ) ) {
            case 1:
                    input .@pcode$;
                    if ( getstrlen( .@pcode$ ) < .@length[0] || getstrlen( .@pcode$ ) > .@length[1] ) {
                            dispbottom "Codes must not be less than " +.@length[0]+ " and must be greater than " +.@length[1]+ ".";
                            end;
                    }
                    mes "You have entered ^FF0000"+.@pcode$+"^000000 as the code.";
                    mes "Are you sure?";
                    if ( select("Yes:No, thanks") - 1 ) end;
                    query_sql "SELECT `code` FROM `reward_codes` WHERE `code` = '" + escape_sql(.@pcode$) + "'", .@pcode_exists;
                    if ( .@pcode_exists ) {
                            dispbottom "Sorry, that code already exist.";
                            end;
                    }
                    mes "Please set a reward for the players who has entered the code.";
                    input .@reward;
                    next;
                    if ( !.@reward || getitemname(.@reward) == "null" ) {
                            dispbottom "Sorry, that is an invalid item id.";
                            end;
                    }
                    set .@iname$, getitemname(.@reward);
                    mes "Item number ^FF0000"+.@reward+"^000000";
                    mes "is equivalent to ^FF0000"+.@iname$+"^000000.";
                    mes "Are you sure?";
                    next;
                    if ( select("Yes:No, thanks") - 1 ) end;
                    mes "How many ^FF0000"+.@iname$+"^000000.?";
                    input .@amount;
                    next;
                    if ( !.@amount ) {
                        dispbottom "Sorry, that is an invalid amount number.";
                        end;
                    }
                    mes "Are you sure?";
                    next;
                    if ( select("Yes:No, thanks") - 1 ) end;
                    query_sql "INSERT INTO `reward_codes` VALUES ( '" + escape_sql(.@pcode$) + "', '" + .@reward + "', '" + escape_sql(.@iname$) + "', '" + .@amount + "', NOW() )";
                    dispbottom "Done creating code!";
                    break;
            case 2:
                    set .@nb, query_sql("SELECT code, item_name, amount FROM `reward_codes` ORDER BY time_created DESC LIMIT 20", .@code$, .@nid$, .@amount);    
                    if ( !.@nb ) {
                        dispbottom "No exisiting codes.";
                        end;
                    }
                    dispbottom "=============================================";
                    dispbottom "==============  EXISITING CODES  ==============";
                    dispbottom "=============================================";
                    for(set .@i,0; .@i < .@nb; set .@i,.@i+1)
                    dispbottom ""+.@code$[.@i]+" (  Reward: "+.@amount[.@i]+" "+.@nid$[.@i]+" ) ";
                    dispbottom "=============================================";
                    break;
            case 3:
                    input .@dcode$;
                    query_sql "SELECT `code` FROM `reward_codes` WHERE `code` = '" + escape_sql(.@dcode$) + "'", .@dcode_exists;
                    if ( !.@dcode_exists ) {
                        dispbottom "Promotional code not found.";
                        end;
                    }
                    mes "Would you like to delete that code?";
                    next;
                    if ( select("Yes:No, thanks") - 1 ) end;
                    query_sql "DELETE FROM `reward_codes` WHERE `code` = '" + escape_sql(.@dcode$) + "'";
                    break;
            case 4: close; break;
            default: break;
        }
        end;
    }

    Try this edit your rewardlogs add ip_address also edit this line

    Quote

    query_sql "SELECT count(*) FROM `rewardlogs` WHERE `code` = '"+ escape_sql(.@pc$) + "' AND `ip_address` = '"+getcharip(strcharinfo(0))+"', .@ipcheck;

    since i dont know what are the columns in rewardlogs hehe ?

    this modification will allow player with different IP to claim the code 

  7. prontera,155,180,4	script	Gold Room#tst	100,{
    	mes "What do you want?";
    	next;
    	switch(select("Enter Gold Room.:Exchange Points:Cancel")) {
    		case 1:
    			@str$ = "";
    			mes "Make sure to type the strings correctly.";
    			mes "Fee: ^FF0000"+F_InsertComma(.zeny)+" Z^000000";
    			for( .@i=0; .@i<.strLen; .@i++ )
    				@str$ += charat(.charSet$, rand(0, getstrlen(.charSet$)));
    			mes "Passcode : ^FF0000"+@str$+"^000000";
    			next;
    			input .@txt$;
    			if( .@txt$ != @str$ ) {
    				mes "You will be kicked.";
    				close2;
    				atcommand "@kick "+strcharinfo(0);
    				end;
    			} else {
    				if( Zeny < .zeny ) {
    					mes "Sorry, but you can't enter the room.";
    					close;
    				} else {
    					@str$ = "";
    					Zeny -= .zeny;
    					warp "ordeal_1-1",0,0;
    					end;
    				}
    			}
    			break;
    			
    		case 2:
    			if( !#goldPoint ) {
    				mes "Don't have enough Gold Points to exchange.";
    				close;
    			}
    			mes "You currently have "+F_InsertPlural(#goldPoint, "Gold Point")+".";
    			mes "Select to what you will exchange your Gold Point";
    			next;
    			switch(select("GOLD BARS:ZENY:Cancel")) {
                  case 1:
    					switch(select("Exchange all of my Gold Points:Decide on how many will I exchange:Cancel")) {
    						case 1:
    							if(!checkweight(969,#goldPoint)) {
    								mes "Sorry, you can't carry these gold bars.";
    								close;
    							} else {
    								getitem 969,#goldPoint;
    								#goldPoint = 0;
    								mes "Here's your gold bars.";
    								mes "You currently have "+F_InsertPlural(#goldPoint, "Gold Point")+".";
    								close;
    							}
    							break;
    						case 2:
    							mes "Input how many gold points will you get.";
    							next;
    							input .@gpoint,0,30000;
    							if( .@gpoint > #goldPoint ) {
    								mes "Sorry, you don't have enough gold points to exchange.";
    								close;
    							} else {
    							if(!checkweight(969,.@gpoint)) {
    								mes "Sorry, you can't carry these gold bars.";
    								close;
    							} else {
    								getitem 969, .@gpoint;
    								#goldPoint -= .@gpoint;
    								mes "Here's your gold bars.";
    								mes "You currently have "+F_InsertPlural(#goldPoint, "Gold Point")+".";
    								close;
    							}
    						}
    							break;
    						default:
    							goto L_Quit;
    							break;
    					}
                  case 2:
    					mes "Input how many Gold Points would you like to convert!";
                        input .@gpoint,0,30000;
    						if( .@gpoint > #goldPoint ) {
    							mes "Sorry, you don't have enough gold points to exchange.";
    							close;
    						} else {
                            	.@totalzeny = zeny + (.@gpoint * .zeny_to_gpoint); 
    							if(.@totalzeny > MAX_ZENY){
    								mes "Sorry, you can't have that much zeny in to your account.";
                                   	close;
    							}else{
                                	zeny += .@gpoint * .zeny_to_gpoint;
                                    #goldPoint -= .@gpoint;
    								mes "Transaction Success! You earned ("+F_InsertComma(.@gpoint * .zeny_to_gpoint)+")z";
    								close;
    							}
    						}
    				
                  default:
                    	goto L_QUIT;
                    	break;
                }
    			close;
    			break;
    			
    		default:
    			goto L_Quit;
    			break;
    	}
    	L_Quit:
    		close;
    		end;
    	
    	OnInit:
    		.charSet$ = "0123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ";
    		.strLen = 10;		// Sets how many characters for the generated confirmation code.
    		.zeny = 200000;		// Entrance fee for the room
    		.zeny_to_gpoint = 1000000;
    		end;
    }
    
    ordeal_1-1,150,150,4	script	Exit	100,{
    	mes "Want to go out?";
    	if( select("Yes:No") == 2 ) close;
    	else {
    		warp "SavePoint",0,0;
    		end;
    	}
    }
    
    
    -	script	gold_room	-1,{
    	OnInit:
    		.mob_id = 1002;		// Monster ID for the Gold Room mobs
    		monster "ordeal_1-1",0,0,"Golden Peco",.mob_id,100,strnpcinfo(0)+"::OnKilled";
    		end;
    		
    	OnKilled:
    		.ppk = rand(1,3);		// Points per kill
    		#goldPoint += .ppk;
    		dispbottom "-- Gold Point Information --";
    		dispbottom "You have acquired "+F_InsertPlural(.ppk,"Gold Point")+".";
    		dispbottom "You have currently have "+F_InsertPlural(#goldPoint,"Gold Point")+".";
    		monster "ordeal_1-1",0,0,"Golden Peco",.mob_id,1,strnpcinfo(0)+"::OnKilled";
    		end;
    		
    	OnPCDieEvent:
    		if( strcharinfo(3) == "ordeal_1-1" ) {
    			#goldPoint = 0;
    			dispbottom "Sorry, but all of the Gold Points you have earned has vanished.";
    		}
    		end;
    }
    
    ordeal_1-1	mapflag	pvp_noparty
    ordeal_1-1	mapflag	pvp_noguild
    ordeal_1-1	mapflag	nowarp
    ordeal_1-1	mapflag	noreturn
    ordeal_1-1	mapflag	noteleport
    ordeal_1-1	mapflag	noskill

    I'm not sure if this will work but I added a "GPOINT -> ZENY" converter and also changed the point from random(1,5) to random(1,3) hope this helps ?

  8. this is kinda difficult since u need to use 

     

    Quote

    OnPCLoadMapEvent:
        getmapxy(@mapname$, @mapx, @mapy);
        dispbottom "You are currently in "+@mapname$;
        end;

    prontera    mapflag    loadevent


    then add mapflag on everymap to make the OnPcLoadMapEvent works on everymap and execute the checker if they are in prontera or not. if we could find another function that triggers when player change map that doesn't need adding mapflag on every map then it would be easy peasy ^_^ hope i could help ?

  9. This is kinda complicated since you only want to affect the drop rate of certain player.. what comes to my mind is kick the player from server if out of main town if he reaches the time limit set by the script add a checker OnPCLoginEvent: // if in town do not kick then if not in any town kick if reach time limit i think u could do it like this ?

     

    i think like it would go like this only for checker ^_^

    Quote

    OnPCLoginEvent:
        if(@mapname$ != "prontera"){
            if(#TIME_LIMIT == .@Time_Limit){
                //kick
            }
        }


     

  10. Try using this 

     

    Quote

     

    *gettime(<type>)

    This function will return specified information about the current system time.

    DT_SECOND - Seconds (of the current minute)
    DT_MINUTE - Minutes (of the current hour)
    DT_HOUR - Hour (of the current day)
    DT_DAYOFWEEK - Week day (constants for MONDAY to SUNDAY are available)
    DT_DAYOFMONTH - Day of the current month
    DT_MONTH - Month (constants for JANUARY to DECEMBER are available)
    DT_YEAR - Year
    DT_DAYOFYEAR - Day of the year
    DT_YYYYMMDD - current date in the form YYYYMMDD

    It will only return numbers. If another type is supplied -1 will be returned.

        if (gettime(DT_DAYOFWEEK) == SATURDAY) mes "It's a Saturday. I don't work on Saturdays.";

     

     

    so it should go like this

    if(gettime(DT_DAYOFMONTH) == 30 || gettime(DT_DAYOFMONTH) == 31){
     //SCRIPT FOR REWARD THE TOP LADDER AND RESET THE LADDER

    }

  11. did you try this?
     

    *getmapusers("<map name>")

    This function will return the number of users currently located on the specified
    map.

    This is used officially in PVP scripts to check whether a room is filled to capacity.

    *mapwarp "<from map>","<to map>",<x>,<y>{,<type>,<ID>};

    This command will collect all characters located on the From map and warp them
    wholesale to the same point on the To map, or randomly distribute them there if
    the coordinates are zero. "Random" is understood as a special To map name and
    will mean randomly shuffling everyone on the same map.

    Optionally, a type and ID can be specified. Available types are:

     0 - Everyone
     1 - Guild
     2 - Party

    Example:

    // Will warp all members of guild with ID 63 on map prontera to map alberta.
        mapwarp "prontera","alberta",150,150,1,63;



    -- JUST THE ADDED SCRIPT---

    .@event_map$ = "morocc";
    if(getmapusers(.@event_map$) > 0){
        mapwarp(.@event_map$,"prontera",190,160,0;
    }

    --- THE WHOLE SCRIPT ---

     

    -	script	diatrigger	-1,{
    
    OnInit:
    disablenpc "Diamond Tower#diaroom";
    .@event_map$ = "morocc"; // event map
    
    bindatcmd "diatower", strnpcinfo(0)+"::OnCommand",99,100;
    	end;
    OnCommand:
    	if ( compare( .@atcmd_parameters$, "on" ) ) goto Ondiatrigger;
    	else {
    		dispbottom "type - '@diatower on' to start the dia tower";
    	}
    	end;
    
    end;
    
    OnClock0300:
    OnClock0600:
    OnClock0900:
    Ondiatrigger:
    if(agitcheck() == 1) end;
    enablenpc "Diamond Tower#diaroom";
    announce "Diagate Keeper: Diamond Tower is NOW OPEN! ",bc_all,0xFFFF00;
    sleep 1000;
    announce "Diagate Keeper: For those who want to hunt ORES for Safe refine, now is the time!",bc_all,0xFFFF00;
    sleep 1000;
    announce "Diagate Keeper: Diamont Tower would be open for 1 Hour!",bc_all,0xFFFF00;
    sleep 30000;
    announce "Diagate Keeper: Diamond Tower is NOW OPEN!",bc_all,0xFFFF00;
    sleep 30000;
    announce "Diagate Keeper: Diamond Tower will only be open for 1 Hour every 4hrs.",bc_all,0xFFFF00;
    sleep ( 60 * 60000 ); // How long before hide again.
    announce "Diagate Keeper: Diamond Tower is now close, Dia Tower will be open after 4hrs.",bc_all,0xFFFF00;
    disablenpc "Diamond Tower#diaroom";
    
    if(getmapusers(.@event_map$) > 0){
    	mapwarp(.@event_map$,"prontera",190,160,0;
    }
    
    end;
    }
    
    


    if this don't work just change the .@event_map$ to $@event_map$ <-- [ Temporary Global String Variable ]

×
×
  • Create New...