Jump to content

ryzenthird

Donators
  • Posts

    23
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by ryzenthird

  1. Hi i'm wondering if is it possible to show item(s) restriction on the item description like if its Dropable,Storageable,Tradeable,Account Bound,Character Bound i saw this How to change item restrictions on the item description? <-- BUT ITS 2016 its so old and the file " item_trade.txt " does not exist anymore. so im wondering if its possible to implement this in latest git. thanks in advanced.
  2. 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; }
  3. 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;
  4. 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; }
  5. why not just remove the kill instead of putting false? did you try it?
  6. View File 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 ? Submitter ryzenthird Submitted 05/11/2023 Category Games, Events, Quests Video Content Author Ryzen Third  
  7. Version 1.0.1

    15 downloads

    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 ?
    10.00 USD
  8. 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 ?
  9. - 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 since i dont know what are the columns in rewardlogs hehe ? this modification will allow player with different IP to claim the code
  10. 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 ?
  11. maybe you can modify the script where it would give reward to all members and add a checker if GL then give GL reward if not then give member reward. ?
  12. Im currently experiencing this if 2018 client its not NO MSG but if 2022 CLIENT IT SAYS NO MSG.. did anyone fixed this? FIXED USING THIS ||chris|| RO English RE - msgstringtable.txt
  13. its so hard to understand your request since u do not have a clear goal. if u want to check item is in inventory just use countitem(item_id)
  14. you mean it should go like +1 step at a time? 4702 - 4711 ( then continue get .orbs[1] until .orbs[2] ) is that right?? setarray .orbs, 4702,4712,4722,4732,4742,4752,4767,4834;
  15. what is it exactly are you trying to achieve??
  16. i think this is source code related? and not script related?
  17. this is kinda difficult since u need to use 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 ?
  18. 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 ^_^
  19. Try using this 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 }
  20. 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 ]
  21. +1 for this topic Salute i'm Excited in This Project I can't Wait!
×
×
  • Create New...