Jump to content

DrakeSky

Members
  • Posts

    69
  • Joined

  • Last visited

Posts posted by DrakeSky

  1. On 7/16/2020 at 8:24 PM, Patskie said:

    Try below 

    
    // if you want to use card trader where you can put multiple cards if u have them in inventory then use below
    prontera,150,150,6	script	Sample	100,{
    	getinventorylist;
    	for (.@i = 0; .@i < @inventorylist_count; .@i++) {
    		if (getiteminfo(@inventorylist_id[.@i], 2) == 6) {
    			.@menu$ = .@menu$ + getitemname(@inventorylist_id[.@i]) + ":";
    			.@cards[getarraysize(.@cards)] = @inventorylist_id[.@i];
    			.@qt[getarraysize(.@qt)] = @inventorylist_amount[.@i];
    		}
    	}
    	
    	.@i = 0;
    	
    	mes "Please select 3 cards...";
    	while (.@i < 3) {
    		if (getarraysize(.@c)) {
    			mes "> 1x " + getitemname(.@c[.@j]);
    			.@j++;
    		}
    		.@s = select(.@menu$) - 1;
    		.@c[getarraysize(.@c)] = .@cards[.@s];
    		cleararray .@qt[.@s], (.@qt[.@s] < 1 ? 0 : (.@qt[.@s]-1)), 1;
    		if (!.@qt[.@s])
    			.@menu$ = replacestr(.@menu$, getitemname(.@cards[.@s]), "");
    		.@i++;
    	}
    	
    	.@size = getarraysize(.@c);
    	mes "> 1x " + getitemname(.@c[.@j]);
    	next;
    	mes "Are you sure you want to trade these cards?";
    	
    	if (select("~ Yes:~ No") & 2) end;
    	
    	for (.@i = 0; .@i < .@size; .@i++)
    		delitem .@c[.@i], 1;
    	
    	getitem rand(4001,4699), 1;
    	
    	close;
    }
    
    // if you want to use distinct card trader, means even if u have 2x poring card you can only trade 1 of them use below
    prontera,153,153,6	script	Sample1	100,{
    	getinventorylist;
    	for (.@i = 0; .@i < @inventorylist_count; .@i++) {
    		if (getiteminfo(@inventorylist_id[.@i], 2) == 6) {
    			.@cards[getarraysize(.@cards)] = @inventorylist_id[.@i];
    			.@menu$ = .@menu$ + getitemname(@inventorylist_id[.@i]) + ":";
    		}
    	}
    	
    	.@i = 0;
    	
    	mes "Please select 3 cards...";
    	while (.@i < 3) {
    		if (getarraysize(.@c)) {
    			mes "> 1x " + getitemname(.@c[.@j]);
    			.@j++;
    		}
    		.@s = select(.@menu$) - 1;
    		.@c[getarraysize(.@c)] = .@cards[.@s];
    		.@menu$ = replacestr(.@menu$, getitemname(.@cards[.@s]), "");
    		.@i++;
    	}
    	
    	.@size = getarraysize(.@c);
    	mes "> 1x " + getitemname(.@c[.@j]);
    	next;
    	mes "Are you sure you want to trade these cards?";
    	
    	for (.@i = 0; .@i < .@size; .@i++)
    		mes "> " + getitemname(.@c[.@i]);
    	
    	if (select("~ Yes:~ No") & 2) end;
    	
    	for (.@i = 0; .@i < .@size; .@i++)
    		delitem .@c[.@i], 1;
    	
    	getitem rand(4001,4699), 1;
    	
    	close;
    }

     

    Sometimes when I trade the card it doesn't give me a card. Where can I fix that?

  2. 5 hours ago, noteeee said:
    
    prontera,150,150,6   script	 Sample	100,{
    	getinventorylist;
    	for (.@i = 0; .@i < @inventorylist_count; .@i++) {
    		if (getiteminfo(@inventorylist_id[.@i], 2) == 6) {
    			.@menu$ = .@menu$ + "- " + getitemname(@inventorylist_id[.@i]) + " x"+@inventorylist_amount[.@i]+":";
    			.@cards[getarraysize(.@cards)] = @inventorylist_id[.@i];
    		}
    	}
    	
    	.@i = 0;
    	
    	mes "Please select 3 cards...";
    	while (.@i < 3) {
    		if (getarraysize(.@c)) {
    			mes "> 1x " + getitemname(.@c[.@j]);
    			.@j++;
    		}
    		.@s = select(.@menu$) - 1;
    		.@c[getarraysize(.@c)] = .@cards[.@s];
    		.@i++;
    	}
    	mes "> 1x " + getitemname(.@c[.@j]);
    	next;
    	mes "Are you sure you want to trade these cards?";
    	if (select("~ Yes:~ No") & 2) end;
    	
    	for (.@i = 0; .@i < getarraysize(.@c); .@i++)
    		delitem .@c[.@i], 1;
    	
    	set @Rand,rand(4001,4699);
            next;
            getitem @Rand,1;
            mes"Congratulations!!.... you received";
            mes "^CC99CC"+getitemname(@Rand)+"^000000";
    	close;
    }

     I have a little bit of customization, you try this. 

    thx @Patskie

    Hi! I tried this but there is an error. I have 1x Willow Card, 2x Drops Card, 1x Poring Card when I try trading my cards I can select 3x Drops Card even though I only have 2x Drops Card then when I traded it 2x Drops Card are gone.

  3. 1 hour ago, M a p l e said:

    data/msgstringtable.txt

    Is that the only way? Because I want to change it into specific shop. Example Kafra Shop i will change it to Kafra Points then Cash Shop to Cash Points

     

  4. 5 minutes ago, Katazui said:

     

    
    //===== rAthena Script =======================================
    //= saders Hourly Rewards
    //===== By: ==================================================
    //= Sader1992
    //https://rathena.org/board/profile/30766-sader1992/
    //===== Current Version: =====================================
    //= 1.2
    //===== Compatible With: ===================================== 
    //= rAthena Project
    //https://rathena.org/board/files/file/3647-saders-hourly-rewards/
    //https://github.com/sader1992/sader_scripts
    //===== Description: =========================================
    //==== all the configuration are in the last
    //==== support gepard / ip / or without them
    //==== if you use ip/gepard sql will be used for that
    //==== can add minimem level to get the rewards
    //==== can change the time
    //==== can ban the vending from the rewards (it will reset after relogin)
    //==== can add rewards else then variable
    //==== there is a shop npc for the variable
    //==== you can make it only for vip
    //==== can ban idle players for X time from the Hourly Rewards
    //==== player can ban his char from getting the reward by @HourlyBan (it will reset after relogin)
    //============================================================
    //==== please send me a message if you find error
    //==== if you like my work maybe consider support me at paypal
    //==== [email protected]
    //============================================================
    //==== 1.1 FIX Critical issue with gepard/ip and compatibility with my other scripts
    //==== 1.2 FIX GrPard Variable
    //============================================================
    -	script	sader_Hourly_Rewards	-1,{
    
    OnHourlyRewards:
           if(#Hourly_Ban){
               message strcharinfo(0),"[Hourly Rewards]: You did ban this char from the Hourly Rewards , Relogin to change that .";
               addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
               end;
           }
           if(.s_idle){
               if(checkidle() > .s_idle_time){
                   message strcharinfo(0),"[Hourly Rewards]: No Hourly Rewards for IDLE Players!.";
                   addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
                   end;
               }
           }
           if(.s_vip){
               if(!vip_status(VIP_STATUS_ACTIVE)){
                   message strcharinfo(0),"[Hourly Rewards]: if you are a VIP you will get Hourly Rewards!.";
                   addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
                   end;
               }
           }
           if(BaseLevel < .s_hourly_level){
               message strcharinfo(0),"[Hourly Rewards]: if you are level "+.s_hourly_level+" and more you will get Hourly Rewards!.";
               addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
               end;
           }
           if(.s_vinding){
               if(checkvending() & .s_vinding){
                   message strcharinfo(0),"[Hourly Rewards]: No Hourly Rewards for Venders , Relogin to change that .";
                   if(.s_GePard_ip){
                   query_logsql("delete from `sader_variables_log` where `variable` = '#Hourly_Rewads_Check' AND `account_id`= '"+getcharid(3)+"'");
                   }
                   #Hourly_Rewads_Check = 0;
                   #Hourly_Ban = 1;
                   addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
                   end;
               }
           }
           #Hourly_Rewads_Check += 1;
           if(.s_GePard_ip == 1){
               query_sql("SELECT `last_unique_id` FROM `login` WHERE `account_id` = '"+getcharid(3)+"'", .@s_last_unique_id$);
               query_logsql("SELECT value FROM `sader_variables_log` WHERE unique_id = '"+.@s_last_unique_id$+"' AND `variable` = '#Hourly_Rewads_Check'", .@s_GePard);
               if(.@s_GePard >= #Hourly_Rewads_Check){
                   message strcharinfo(0),"[Hourly Rewards]: You already got the Hourly Rewards from this PC";
                   #Hourly_Rewads_Check -= 1;
                   addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
                   end;
               }
               if(.@s_GePard == 0){
                   query_logsql("INSERT INTO `sader_variables_log` (`unique_id`,`ip`,`variable`,`index`,`value`, `account_id`, `char_id`, `char_name`) VALUES ('"+.@s_last_unique_id$+"', '"+getcharip()+"', '#Hourly_Rewads_Check', '0', '"+#Hourly_Rewads_Check+"', '"+getcharid(3)+"', '"+getcharid(0)+"', '"+strcharinfo(0)+"')");
               }
               query_logsql("Update `sader_variables_log` SET `value` = '"+#Hourly_Rewads_Check+"' WHERE `unique_id`= '"+.@s_last_unique_id$+"' AND `variable` = '#Hourly_Rewads_Check'");
           }else if(.s_GePard_ip == 2){
               query_logsql("SELECT value FROM `sader_variables_log` WHERE ip = '"+getcharip()+"' AND `variable` = '#Hourly_Rewads_Check'", .@s_ip);
               if(.@s_ip >= #Hourly_Rewads_Check){
                   message strcharinfo(0),"[Hourly Rewards]: You already got the Hourly Rewards from this IP";
                   #Hourly_Rewads_Check -= 1;
                   addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
                   end;
               }
               if(.@s_ip == 0){
                   query_logsql("INSERT INTO `sader_variables_log` (`unique_id`,`ip`,`variable`,`index`,`value`, `account_id`, `char_id`, `char_name`) VALUES ('"+.@s_last_unique_id$+"', '"+getcharip()+"', '#Hourly_Rewads_Check', '0', '"+#Hourly_Rewads_Check+"', '"+getcharid(3)+"', '"+getcharid(0)+"', '"+strcharinfo(0)+"')");
               }
               query_logsql("Update `sader_variables_log` SET `value` = '"+#Hourly_Rewads_Check+"' WHERE `ip`= '"+getcharip()+"' AND `variable` = '#Hourly_Rewads_Check'");
           }
           message strcharinfo(0),"[Hourly Rewards]: you Gain your Reward.";
           callsub Hourly_Rewads;
           addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
    end;
    
    OnHourlyBan:
       if(!#Hourly_Ban){
           message strcharinfo(0),"[Hourly Rewards]: You did ban this char from the Hourly Rewards , Relogin to change that .";
           if(.s_GePard_ip){
           query_logsql("delete from `sader_variables_log` where `variable` = '#Hourly_Rewads_Check' AND `account_id`= '"+getcharid(3)+"'");
           }
           #Hourly_Rewads_Check = 0;
           #Hourly_Ban = 1;
           addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
       }
    end;
    
    OnUnHourlyBan:
       #Hourly_Ban = 0;
    end;
    OnPCLogoutEvent:
       if(.s_GePard_ip){
       query_logsql("delete from `sader_variables_log` where `variable` = '#Hourly_Rewads_Check' AND `account_id`= '"+getcharid(3)+"'");
       }
       if(#Hourly_Ban == 1){
           #Hourly_Ban = 0;
       }
       #Hourly_Rewads_Check = 0;
    end;
    
    OnPCLoginEvent:
       addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
    end;
    
    OnInit:
       .s_idle = 0; //    ban hourly rewards from idle players ? 0 no / 1 yes {if player didn't move for x time he wont get hourly reward}  , DEFAULT = 0
       .s_idle_time = 1800; //    this the time for idle in secend  , DEFAULT = 1800 (30 min)
       .s_vip = 0; //    1 = only for VIP / 0 = for everyone  , DEFAULT = 0
       .s_time = 3600000; //    1000 = 1 secend | 60000 = 1 min | 3600000 = 1 houre  , DEFAULT = 3600000 (1 hr)
       .s_hourly_level = 0; //    Minimam level to get the Houerly rewards / 0 = no minimem level  , DEFAULT 0
       .s_GePard_ip = 0; //    0 = no Gepard / 1 = Gepard / 2 = IP  , DEFAULT 0
       .s_vinding = 7; //    DEFAULT 7 / 0 = will give the reward even if vending / 1 = no normal vending / 2 = no @autotrade / 4 = no buyingstore | Example: if you want to ban normal vend and buying store you add the numbers 1+4=5
       query_logsql("CREATE TABLE IF NOT EXISTS `sader_variables_log` (`unique_id` INT( 11 ) UNSIGNED NOT NULL DEFAULT  '0',`ip` VARCHAR(100) NOT NULL,`variable` VARCHAR(32) NOT NULL, `index` INT NOT NULL, `value` INT NOT NULL,`account_id` INT NOT NULL,`char_id` INT NOT NULL,`char_name` VARCHAR(30) NOT NULL) ENGINE=MyISAM");
       bindatcmd("UnHourlyBan",strnpcinfo(3)+"::OnUnHourlyBan",99,99);
       bindatcmd("HourlyBan",strnpcinfo(3)+"::OnHourlyBan",0,99);
    
    end;
    
    Hourly_Rewads:
       //put the Hourly Rewards here
       #HourlyShop += 1;
       //getitem 905,1; //    if you want to add items as reward you can add them here like that
       //getexp 10000,5000; //    if you wanna add exp as reward add them here like that
       //if(#Hourly_Rewads_Check == 5){getitem 905,1;} //    like this you can add reward for Xhr and this reward will be given for that X in this example 5 mean that the player did pass 5hr
       //if(#Hourly_Rewads_Check >= 5){getitem 905,1;} //    like this you can add reward for Xhr and this reward will be given for that X in this example 5 mean that the player did pass 5hr or more
    return;
    }
    //prontera,144,126,6    pointshop    Hourly Point Shop    667,#HourlyShop,13534:5,13810:5,12913:5,12914:5,13718:5,12909:5,12922:5
    //<ITEM_ID>:<PRICE>,<ITEM_ID>:<PRICE>,<ITEM_ID>:<PRICE>,<ITEM_ID>:<PRICE> 
    
    -	pointshop	Hourly Point Shop	667,#HourlyShop,13534:5,13810:5,12913:5,12914:5,13718:5,12909:5,12922:5
    
    prontera,144,126,6	script	Hourly Point Shop#NPC	667,{
    callshop "Hourly Point Shop",0;
    end;
    
    OnInit:
    delwaitingroom;
    waitingroom "--- Hourly Point Shop ---",0;
    end;
    
    }

     

    Thank you, Sir Katazui! ^_^

  5. Where should I put the Waiting room here?

    //===== rAthena Script =======================================
    //= saders Hourly Rewards
    //===== By: ==================================================
    //= Sader1992
    //https://rathena.org/board/profile/30766-sader1992/
    //===== Current Version: =====================================
    //= 1.2
    //===== Compatible With: ===================================== 
    //= rAthena Project
    //https://rathena.org/board/files/file/3647-saders-hourly-rewards/
    //https://github.com/sader1992/sader_scripts
    //===== Description: =========================================
    //==== all the configuration are in the last
    //==== support gepard / ip / or without them
    //==== if you use ip/gepard sql will be used for that
    //==== can add minimem level to get the rewards
    //==== can change the time
    //==== can ban the vending from the rewards (it will reset after relogin)
    //==== can add rewards else then variable
    //==== there is a shop npc for the variable
    //==== you can make it only for vip
    //==== can ban idle players for X time from the Hourly Rewards
    //==== player can ban his char from getting the reward by @HourlyBan (it will reset after relogin)
    //============================================================
    //==== please send me a message if you find error
    //==== if you like my work maybe consider support me at paypal
    //==== [email protected]
    //============================================================
    //==== 1.1 FIX Critical issue with gepard/ip and compatibility with my other scripts
    //==== 1.2 FIX GrPard Variable
    //============================================================
    -    script    sader_Hourly_Rewards    -1,{
    
    OnHourlyRewards:
            if(#Hourly_Ban){
                message strcharinfo(0),"[Hourly Rewards]: You did ban this char from the Hourly Rewards , Relogin to change that .";
                addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
                end;
            }
            if(.s_idle){
                if(checkidle() > .s_idle_time){
                    message strcharinfo(0),"[Hourly Rewards]: No Hourly Rewards for IDLE Players!.";
                    addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
                    end;
                }
            }
            if(.s_vip){
                if(!vip_status(VIP_STATUS_ACTIVE)){
                    message strcharinfo(0),"[Hourly Rewards]: if you are a VIP you will get Hourly Rewards!.";
                    addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
                    end;
                }
            }
            if(BaseLevel < .s_hourly_level){
                message strcharinfo(0),"[Hourly Rewards]: if you are level "+.s_hourly_level+" and more you will get Hourly Rewards!.";
                addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
                end;
            }
            if(.s_vinding){
                if(checkvending() & .s_vinding){
                    message strcharinfo(0),"[Hourly Rewards]: No Hourly Rewards for Venders , Relogin to change that .";
                    if(.s_GePard_ip){
                    query_logsql("delete from `sader_variables_log` where `variable` = '#Hourly_Rewads_Check' AND `account_id`= '"+getcharid(3)+"'");
                    }
                    #Hourly_Rewads_Check = 0;
                    #Hourly_Ban = 1;
                    addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
                    end;
                }
            }
            #Hourly_Rewads_Check += 1;
            if(.s_GePard_ip == 1){
                query_sql("SELECT `last_unique_id` FROM `login` WHERE `account_id` = '"+getcharid(3)+"'", .@s_last_unique_id$);
                query_logsql("SELECT value FROM `sader_variables_log` WHERE unique_id = '"+.@s_last_unique_id$+"' AND `variable` = '#Hourly_Rewads_Check'", .@s_GePard);
                if(.@s_GePard >= #Hourly_Rewads_Check){
                    message strcharinfo(0),"[Hourly Rewards]: You already got the Hourly Rewards from this PC";
                    #Hourly_Rewads_Check -= 1;
                    addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
                    end;
                }
                if(.@s_GePard == 0){
                    query_logsql("INSERT INTO `sader_variables_log` (`unique_id`,`ip`,`variable`,`index`,`value`, `account_id`, `char_id`, `char_name`) VALUES ('"+.@s_last_unique_id$+"', '"+getcharip()+"', '#Hourly_Rewads_Check', '0', '"+#Hourly_Rewads_Check+"', '"+getcharid(3)+"', '"+getcharid(0)+"', '"+strcharinfo(0)+"')");
                }
                query_logsql("Update `sader_variables_log` SET `value` = '"+#Hourly_Rewads_Check+"' WHERE `unique_id`= '"+.@s_last_unique_id$+"' AND `variable` = '#Hourly_Rewads_Check'");
            }else if(.s_GePard_ip == 2){
                query_logsql("SELECT value FROM `sader_variables_log` WHERE ip = '"+getcharip()+"' AND `variable` = '#Hourly_Rewads_Check'", .@s_ip);
                if(.@s_ip >= #Hourly_Rewads_Check){
                    message strcharinfo(0),"[Hourly Rewards]: You already got the Hourly Rewards from this IP";
                    #Hourly_Rewads_Check -= 1;
                    addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
                    end;
                }
                if(.@s_ip == 0){
                    query_logsql("INSERT INTO `sader_variables_log` (`unique_id`,`ip`,`variable`,`index`,`value`, `account_id`, `char_id`, `char_name`) VALUES ('"+.@s_last_unique_id$+"', '"+getcharip()+"', '#Hourly_Rewads_Check', '0', '"+#Hourly_Rewads_Check+"', '"+getcharid(3)+"', '"+getcharid(0)+"', '"+strcharinfo(0)+"')");
                }
                query_logsql("Update `sader_variables_log` SET `value` = '"+#Hourly_Rewads_Check+"' WHERE `ip`= '"+getcharip()+"' AND `variable` = '#Hourly_Rewads_Check'");
            }
            message strcharinfo(0),"[Hourly Rewards]: you Gain your Reward.";
            callsub Hourly_Rewads;
            addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
    end;
    
    OnHourlyBan:
        if(!#Hourly_Ban){
            message strcharinfo(0),"[Hourly Rewards]: You did ban this char from the Hourly Rewards , Relogin to change that .";
            if(.s_GePard_ip){
            query_logsql("delete from `sader_variables_log` where `variable` = '#Hourly_Rewads_Check' AND `account_id`= '"+getcharid(3)+"'");
            }
            #Hourly_Rewads_Check = 0;
            #Hourly_Ban = 1;
            addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
        }
    end;
    
    OnUnHourlyBan:
        #Hourly_Ban = 0;
    end;
    OnPCLogoutEvent:
        if(.s_GePard_ip){
        query_logsql("delete from `sader_variables_log` where `variable` = '#Hourly_Rewads_Check' AND `account_id`= '"+getcharid(3)+"'");
        }
        if(#Hourly_Ban == 1){
            #Hourly_Ban = 0;
        }
        #Hourly_Rewads_Check = 0;
    end;
    
    OnPCLoginEvent:
        addtimer .s_time, strnpcinfo(3)+"::OnHourlyRewards";
    end;
    
    OnInit:
        .s_idle = 0; //    ban hourly rewards from idle players ? 0 no / 1 yes {if player didn't move for x time he wont get hourly reward}  , DEFAULT = 0
        .s_idle_time = 1800; //    this the time for idle in secend  , DEFAULT = 1800 (30 min)
        .s_vip = 0; //    1 = only for VIP / 0 = for everyone  , DEFAULT = 0
        .s_time = 3600000; //    1000 = 1 secend | 60000 = 1 min | 3600000 = 1 houre  , DEFAULT = 3600000 (1 hr)
        .s_hourly_level = 0; //    Minimam level to get the Houerly rewards / 0 = no minimem level  , DEFAULT 0
        .s_GePard_ip = 0; //    0 = no Gepard / 1 = Gepard / 2 = IP  , DEFAULT 0
        .s_vinding = 7; //    DEFAULT 7 / 0 = will give the reward even if vending / 1 = no normal vending / 2 = no @autotrade / 4 = no buyingstore | Example: if you want to ban normal vend and buying store you add the numbers 1+4=5
        query_logsql("CREATE TABLE IF NOT EXISTS `sader_variables_log` (`unique_id` INT( 11 ) UNSIGNED NOT NULL DEFAULT  '0',`ip` VARCHAR(100) NOT NULL,`variable` VARCHAR(32) NOT NULL, `index` INT NOT NULL, `value` INT NOT NULL,`account_id` INT NOT NULL,`char_id` INT NOT NULL,`char_name` VARCHAR(30) NOT NULL) ENGINE=MyISAM");
        bindatcmd("UnHourlyBan",strnpcinfo(3)+"::OnUnHourlyBan",99,99);
        bindatcmd("HourlyBan",strnpcinfo(3)+"::OnHourlyBan",0,99);
    
    end;
    
    Hourly_Rewads:
        //put the Hourly Rewards here
        #HourlyShop += 1;
        //getitem 905,1; //    if you want to add items as reward you can add them here like that
        //getexp 10000,5000; //    if you wanna add exp as reward add them here like that
        //if(#Hourly_Rewads_Check == 5){getitem 905,1;} //    like this you can add reward for Xhr and this reward will be given for that X in this example 5 mean that the player did pass 5hr
        //if(#Hourly_Rewads_Check >= 5){getitem 905,1;} //    like this you can add reward for Xhr and this reward will be given for that X in this example 5 mean that the player did pass 5hr or more
    return;
    }
    prontera,144,126,6    pointshop    Hourly Point Shop    667,#HourlyShop,13534:5,13810:5,12913:5,12914:5,13718:5,12909:5,12922:5
    //<ITEM_ID>:<PRICE>,<ITEM_ID>:<PRICE>,<ITEM_ID>:<PRICE>,<ITEM_ID>:<PRICE>

     

  6. 25 minutes ago, Katazui said:
    
    *callshop "<name>",<option>;
    
    These are a series of commands used to create dynamic shops.
    The 'callshop' function calls an invisible shop (view -1) as if the player clicked on it.
    
    The options are:
    	0 = The normal window (buy, sell and cancel)
    	1 = The buy window
    	2 = The sell window
    
    Note: The <option> parameter only works on the 'shop' type NPC.
    
    A shop called with this command will trigger the labels "OnBuyItem" and "OnSellItem"
    (as long as an npcshop* command is executed from that NPC, see note below). These
    labels, if used, will replace how the shop handles the buying and selling of items,
    allowing for the creation of dynamic shops.
    
    The label "OnBuyItem" sets the following arrays:
    	@bought_nameid   - item ID bought
    	@bought_quantity - amount bought
    
    The label "OnSellItem" sets the following arrays:
    	@sold_nameid        - item ID sold
    	@sold_quantity      - amount sold
    	@sold_refine        - refine count
    	@sold_attribute     - if the item is broken (1) or not (0)
    	@sold_identify      - if the item is identified (1) or not (0)
    	@sold_card1         - card slot 1
    	@sold_card2         - card slot 2
    	@sold_card3         - card slot 3
    	@sold_card4         - card slot 4
    	@sold_option_id1    - random option ID 1
    	@sold_option_val1   - random option value 1
    	@sold_option_param1 - random option param 1
    	@sold_option_id2    - random option ID 2
    	@sold_option_val2   - random option value 2
    	@sold_option_param2 - random option param 2
    	@sold_option_id3    - random option ID 3
    	@sold_option_val3   - random option value 3
    	@sold_option_param3 - random option param 3
    	@sold_option_id4    - random option ID 4
    	@sold_option_val4   - random option value 4
    	@sold_option_param4 - random option param 4
    	@sold_option_id5    - random option ID 5
    	@sold_option_val5   - random option value 5
    	@sold_option_param5 - random option param 5
    
    Note: These labels will only be triggered if an npcshop* command is executed because these
    commands set a special data on the shop NPC, named master_nd in the source. The above labels
    are triggered in the NPC whose master_nd is given in the shop.
    
    A full example of a dynamic shop can be found in doc/sample/npc_dynamic_shop.txt.

     

    
    prontera,140,126,6    cashshop    Kafra Shop    116,13534:5,13810:5,12913:5,12914:5,13718:5,12909:5,12922:5
    
    prontera,140,126,6    script    Cash Shop    116,{
    callshop "Kafra Shop",0;
    end;
    
    OnInit:
    delwaitingroom;
    waitingroom "--- Cash Shop ---",0;
    end;
    
    }

     

    Thank you so much! Sir Katazui, I was able to fix it ^_^ you're so helpful ^_^

  7. Hi!

    I'm having a hard time on this Cash Shop or Kafra Shop, what I want is a Cash Shop or Kafra Shop that used Cash Points that has a Waiting Room on it.

    Every time I reload my script the name of the NPC will become Kafra Shop but when I log out then log back in it will become Cash Shop.

    Need help on this script. Thanks.

     

    Here's my script:

    prontera,140,126,6    cashshop    Kafra Shop    116,13534:5,13810:5,12913:5,12914:5,13718:5,12909:5,12922:5
    
    prontera,140,126,6    script    Cash Shop    116,{
    
    callshop "Kafra Shop",116;
    
    OnInit:
    delwaitingroom;
    waitingroom "--- Cash Shop ---",0;
    end;
    
    close;
    }

     

  8. On 6/20/2020 at 4:01 AM, Patskie said:
    
    prontera,150,150,6	script	Sample	100,{
    	getinventorylist;
    	for (.@i = 0; .@i < @inventorylist_count; .@i++) {
    		if (getiteminfo(@inventorylist_id[.@i], 2) == 6) {
    			.@menu$ = .@menu$ + "- " + getitemname(@inventorylist_id[.@i]) + ":";
    			.@cards[getarraysize(.@cards)] = @inventorylist_id[.@i];
    		}
    	}
    	
    	.@i = 0;
    	
    	mes "Please select 3 cards...";
    	while (.@i < 3) {
    		if (getarraysize(.@c)) {
    			mes "> 1x " + getitemname(.@c[.@j]);
    			.@j++;
    		}
    		.@s = select(.@menu$) - 1;
    		.@c[getarraysize(.@c)] = .@cards[.@s];
    		.@i++;
    	}
    	mes "> 1x " + getitemname(.@c[.@j]);
    	next;
    	mes "Are you sure you want to trade these cards?";
    	if (select("~ Yes:~ No") & 2) end;
    	
    	for (.@i = 0; .@i < getarraysize(.@c); .@i++)
    		delitem .@c[.@i], 1;
    	
    	getitem rand(4001,4699), 1;
    	
    	close;
    }

    Try something like this

    I have 23 poring cards but it is not showing how many poring cards I have, also when I trade 3 poring cards I got 1 Mummy Card then I try trading the mummy card, I can input 3 Mummy Card then after trading no card will release.

  9. 23 hours ago, Katazui said:

    Haven't tested this, but I think this should work. @DrakeSky

    
    -	script	SellCommand	-1,{
    OnInit:
        set .sell_delay, 30; // Seconds
        bindatcmd "sell",strnpcinfo(3) + "::OnSellCommand";
        end;
    	
    OnSellCommand:
        set .@gettimetick, gettimetick(2);
        set .@sell_num, ( sell_cooldown - gettimetick(2) );
        if( sell_cooldown > .@gettimetick ) {
          dispbottom "You have to wait "+.@sell_num+" seconds before using @sell again.";
          end;
        }
        .@s$ = .@atcmd_parameters$[0];
        announce strcharinfo(0) + ": " + .@s$,bc_all,0x2fe24a;
        set sell_cooldown, ( .@gettimetick + ( .sell_delay ));
        end;
    }

     

    Thank you! Let me try this one. Last resort is via Channel

  10. 34 minutes ago, Start_ said:
    
    -	script	SellCommand	-1,{
    OnInit:
    	bindatcmd "sell",strnpcinfo(3) + "::OnSellCommand";
    	end;
    	
    OnSellCommand:
    	.@s$ = .@atcmd_parameters$[0];
    	announce strcharinfo(0) + ": " + .@s$,bc_all,0x2fe24a;
    	end;
    }

     

    Thank you so much Sir! you're the best.

    Is it okay if you can put a time on it so it wont be spammable?  Like, you can only use this every 30 seconds? then if you try to use again there is a message that will say you can only use this every 30 secconds

     

  11. Hi! to all scripters,

    Can I request an npc script like bindatcmd that when a player type "@sell <message>" his/her message will be broadcast to the whole server with a hexcolor on it?

    Thank you so much! Have a good day!

  12. On 6/18/2020 at 7:51 PM, Mael said:

    Just out of curiosity could you share your clientinfo?

    Here is my clientinfo

     

    <?xml version="1.0" encoding="euc-kr" ?>
    <clientinfo>
        <desc>Ragnarok Client Information</desc>
        <servicetype>korea</servicetype>
        <servertype>primary</servertype>
        <connection>
            <display>RagnarokRO</display>
                  <address>127.0.0.1</address>
                  <port>6900</port>
                  <version>30</version>
                  <langtype>0</langtype>
            <registrationweb></registrationweb>
            <loading>
                <image>loading00.jpg</image>
                <image>loading01.jpg</image>
                <image>loading02.jpg</image>
                <image>loading03.jpg</image>
            </loading>
                <aid>
                <admin>2000000</admin>
            </aid>
           </connection>
    </clientinfo>
     

     

  13. On 6/18/2020 at 12:06 AM, Mihael said:

    Try Rename you dbghelp.dll to dbghelp_old.dll

    I already try this but still not working. =( I don't know what to do anymore

    On 6/18/2020 at 12:17 AM, Chaos92 said:

    Maybe your antivirus changed/blocked it so if you try to open the client, nothing happen.

    Try to check did the process running in task manager.

    I did check that as well and it's not in the process running in task manager

    On 6/18/2020 at 12:17 AM, Chaos92 said:

    Maybe your antivirus changed/blocked it so if you try to open the client, nothing happen.

    Try to check did the process running in task manager.

    it's now showing in the process when I diff hlkm to hkcu. But still not showing the screen.

    On 6/18/2020 at 12:06 AM, Mihael said:

    Try Rename you dbghelp.dll to dbghelp_old.dll

    Still not working =( really need help. 

  14. 8 minutes ago, Mael said:

    Did you try checking the packetver of your emulator? btw Ragexe use clientinfo and RagexeRE use sclientinfo.

    Yes sir, Im using clientinfo for aRagexe. Client ver is 30. Before everything is working fine. I just updated to Windows 10 pro then client is not opening anymore.

  15. Hi!

    I badly need help.

    After I upgrade my Windows 10 Lite to WIndows 10 Pro, my ragexe client is not opening. Currently using 20120410aRagexe and r17704. Before, It's working fine but after I update my Windows 10 its not working anymore. Other private server is working fine. Please help me. Already did all the compatibility settings, also turn off firewall, update my drivers. I really dont know what to do now. Below is what is inside my folder.

     

     

     

     

    pic4.jpg

    pic3.jpg

    pic1.jpg

    pic2.jpg

  16. Need help... Where should I put the waiting room? TIA

    //===== rAthena Script =======================================
    //= Euphy's Quest Shop
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.6c
    //===== Compatible With: =====================================
    //= rAthena Project
    //===== Description: =========================================
    //= A dynamic quest shop based on Lunar's, with easier config.
    //= Includes support for multiple shops & cashpoints.
    //= Item Preview script by ToastOfDoom.
    //===== Additional Comments: =================================
    //= 1.0 Initial script.
    //= 1.2 Added category support.
    //= 1.3 More options and fixes.
    //= 1.4 Added debug settings.
    //= 1.5 Replaced categories with shop IDs.
    //= 1.6 Added support for purchasing stackables.
    //= 1.6a Added support for previewing costumes and robes.
    //= 1.6b Added 'disable_items' command.
    //= 1.6c Replaced function 'A_An' with "F_InsertArticle".
    //============================================================
    
    // Shop NPCs -- supplying no argument displays entire menu.
    //    callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}};
    //  ADD YOUR NPC HERE
    //============================================================
    prontera,164,203,6    script    Quest Shop#1    998,{ callfunc "qshop"; }
    // prontera,165,203,6    script    Quest Shop#2    998,{ callfunc "qshop",1,2; }    // call the shop 1 and 2 defined below
    // etc.. Add your Shop NPCs 'Quest Shop#XXX' here
    //============================================================
    
    
    // Script Core - DO NOT DUPLICATE THIS NPC !!!!!!!!!!!!!
    //============================================================
    -    script    quest_shop    -1,{
    function Add; function Chk; function Slot;
    OnInit:
        freeloop(1);
    
    // -----------------------------------------------------------
    //  Basic shop settings.
    // -----------------------------------------------------------
    
        set .Announce,1;    // Announce quest completion? (1: yes / 0: no)
        set .ShowSlot,1;    // Show item slots? (2: all equipment / 1: if slots > 0 / 0: never)
        set .ShowID,1;      // Show item IDs? (1: yes / 0: no)
        set .ShowZeny,0;    // Show Zeny cost, if any? (1: yes / 0: no)
        set .MaxStack,100;    // Max number of quest items purchased at one time.
    
    // -----------------------------------------------------------
    //  Points variable -- optional quest requirement.
    //    setarray .Points$[0],"<variable name>","<display name>";
    // -----------------------------------------------------------
    
        setarray .Points$[0],
            "#CASHPOINTS", "Cash Points";
    
    
    //=====================================================================================
    // ------------------- ADD YOUR SHOPS NAME AND ITEMS SHOPS STARTING HERE --------------
    //=====================================================================================
    
    // -----------------------------------------------------------
    //  Shop IDs -- to add shops, copy dummy data at bottom of file.
    //    setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...};
    // -----------------------------------------------------------
    
        setarray .Shops$[1],
            "Costume Upper",    // Shop Named 1
            "Costume Middle",    // Shop Named 2
            "Costume Lower",        // Shop Named 3
            "Costume Garment";        // Shop Named 4
    
    // -----------------------------------------------------------
    //  Quest items -- do NOT use a reward item more than once!
    //    Add(<shop ID>,<reward ID>,<reward amount>,
    //        <Zeny cost>,<point cost>,
    //        <required item ID>,<required item amount>{,...});
    // -----------------------------------------------------------
    
        Add(1,31290,1,0,0,40129,15,641,1,1039,250,969,1,976,1,2255,1,2227,1);
        Add(1,31291,1,0,0,40129,15,642,1,1039,250,969,1,975,1,2255,1,2227,1);
        Add(1,31090,1,0,0,40129,15,619,1,7121,250,969,1,980,1,2254,1,2221,1);
        Add(1,31098,1,0,0,40129,15,638,1,1022,250,969,1,981,1,10007,1,2274,1);
        Add(1,31140,1,0,0,40129,15,628,1,7166,250,969,1,983,1,2248,1,1030,1);
        Add(1,31187,1,0,0,40129,15,622,1,1059,250,969,1,983,1,2250,1,7510,1);
        Add(1,31190,1,0,0,40129,15,639,1,1020,250,969,1,975,1,661,1,10016,1);
        
        Add(2,20406,1,0,0,40129,15,642,1,1098,250,969,1,979,1,2626,1,7023,1);
        Add(2,20314,1,0,0,40129,15,625,1,7126,250,969,1,983,1,5007,1,5104,1);
        Add(2,31122,1,0,0,40129,15,624,1,930,250,969,1,975,1,2258,1,5096,1);
        
        Add(3,31057,1,0,0,40129,15,626,1,7216,250,969,1,983,1,2507,1,1232,1);
        Add(3,20405,1,0,0,40129,15,626,1,7216,250,969,1,975,1,2507,1,1232,1);
        Add(3,31189,1,0,0,40129,15,633,1,7216,250,969,1,975,1,10019,1,5002,1);
    
    
        Add(4,20512,1,0,0,40129,15,640,1,538,250,969,1,975,1,2327,1,5019,1);
    
    // -----------------------------------------------------------
    
    //=====================================================================================
    // ------------------- YOUR SHOPS AND ITEMS SHOPS HAVE BEEN ADDED ---------------------
    //=====================================================================================
    
        freeloop(0);
        set .menu$,"";
        for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) {
            set .menu$, .menu$+.Shops$[.@i]+":";
            npcshopdelitem "qshop"+.@i,909;
        }
        end;
    
    OnMenu:
        set .@size, getarraysize(@i);
        if (!.@size) set @shop_index, select(.menu$);
        else if (.@size == 1) set @shop_index, @i[0];
        else {
            for(set .@j,0; .@j<.@size; set .@j,.@j+1)
                set .@menu$, .@menu$+.Shops$[@i[.@j]]+":";
            set @shop_index, @i[select(.@menu$)-1];
        }
        deletearray @i[0],getarraysize(@i);
        if (.Shops$[@shop_index] == "") {
            message strcharinfo(0),"An error has occurred.";
            end;
        }
        dispbottom "Select one item at a time.";
        callshop "qshop"+@shop_index,1;
        npcshopattach "qshop"+@shop_index;
        end;
    
    OnBuyItem:
        // .@q[] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... }
        setarray .@q[0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]);
        copyarray .@q[3],getd(".q_"+@shop_index+"_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+@shop_index+"_"+.@q[0]));
        set .@q[2],.@q[1]*.@q[3];
        if (!.@q[2] || .@q[2] > 30000) {
            message strcharinfo(0),"You can't purchase that many "+getitemname(.@q[0])+".";
            end;
        }
        mes "[Quest Shop]";
        mes "Reward: ^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000";
        mes "Requirements:";
        disable_items;
        if (.@q[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000";
        if (.@q[5]) mes " > "+Chk(getd(.Points$[0]),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+(.@q[5]*.@q[1])+")^000000";
        if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
            mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000";
        next;
        setarray @qe[1], getiteminfo(.@q[0],5), getiteminfo(.@q[0],11);
        if (@qe[2] > 0 && ((@qe[1] & EQP_HEAD_LOW) || (@qe[1] & EQP_HEAD_TOP) || (@qe[1] & EQP_HEAD_MID) || (@qe[1] & EQP_COSTUME_HEAD_TOP) || (@qe[1] & EQP_COSTUME_HEAD_MID) || (@qe[1] & EQP_COSTUME_HEAD_LOW) || (@qe[1] & EQP_GARMENT) || (@qe[1] & EQP_COSTUME_GARMENT)))
            set .@preview,1;
        addtimer 1000, strnpcinfo(0)+"::OnEnd";
        while(1) {
            switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[7])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) {
            case 1:
                if (@qe[0]) {
                    mes "[Quest Shop]";
                    mes "You're missing one or more quest requirements.";
                    close;
                }
                if (!checkweight(.@q[0],.@q[2])) {
                    mes "[Quest Shop]";
                    mes "^FF0000You need "+(((.@q[2]*getiteminfo(.@q[0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000";
                    close;
                }
                if (.@q[4]) set Zeny, Zeny-(.@q[4]*.@q[1]);
                if (.@q[5]) setd .Points$[0], getd(.Points$[0])-(.@q[5]*.@q[1]);
                if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
                    delitem .@q[.@i],.@q[.@i+1]*.@q[1];
                getitem .@q[0],.@q[2];
                if (.Announce) announce strcharinfo(0)+" has created "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):callfunc("F_InsertArticle",getitemname(.@q[0])))+"!",0;
                specialeffect2 EF_FLOWERLEAF;
                close;
            case 2:
                setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1;
                if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2];
                else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2];
                else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2];
                else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2];
                break;
            case 3:
                close;
            }
        }
    
    OnEnd:
        if (@qe[7]) {
            changelook LOOK_HEAD_BOTTOM, @qe[3];
            changelook LOOK_HEAD_TOP, @qe[4];
            changelook LOOK_HEAD_MID, @qe[5];
            changelook LOOK_ROBE, @qe[6];
        }
        deletearray @qe[0],8;
        end;
    
    function Add {
        if (getitemname(getarg(1)) == "null") {
            debugmes "Quest reward #"+getarg(1)+" invalid (skipped).";
            return;
        }
        setarray .@j[0],getarg(2),getarg(3),getarg(4);
        for(set .@i,5; .@i<getargcount(); set .@i,.@i+2) {
            if (getitemname(getarg(.@i)) == "null") {
                debugmes "Quest requirement #"+getarg(.@i)+" invalid (skipped).";
                return;
            } else
                setarray .@j[.@i-2],getarg(.@i),getarg(.@i+1);
        }
        copyarray getd(".q_"+getarg(0)+"_"+getarg(1)+"[0]"),.@j[0],getarraysize(.@j);
        npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0);
        return;
    }
    
    function Chk {
        if (getarg(0) < getarg(1)) {
            set @qe[0],1;
            return "^FF0000";
        } else
            return "^00FF00";
    }
    
    function Slot {
        set .@s$,getitemname(getarg(0));
        switch(.ShowSlot) {
            case 1: if (!getitemslots(getarg(0))) return .@s$;
            case 2: if (getiteminfo(getarg(0),2) == 4 || getiteminfo(getarg(0),2) == 5) return .@s$+" ["+getitemslots(getarg(0))+"]";
            default: return .@s$;
        }
    }
    }
    
    function    script    qshop    {
        deletearray @i[0],getarraysize(@i);
        for(set .@i,0; .@i<getargcount(); set .@i,.@i+1)
            set @i[.@i],getarg(.@i);
        doevent "quest_shop::OnMenu";
        end;
    }
    
    
    // Dummy shop data -- copy as needed.
    //============================================================
    -    shop    qshop1    -1,909:-1
    -    shop    qshop2    -1,909:-1
    -    shop    qshop3    -1,909:-1
    -    shop    qshop4    -1,909:-1
    -    shop    qshop5    -1,909:-1


     

×
×
  • Create New...