keough 36 Posted May 24, 2017 Okay i need this kind of npc and it was cool event rewarder in my past official server. Cool Event Rewarder GM Side - The GM will manually insert the character name of the player who won in the event on the NPC. - He can give Items, zeny or cashpoint. - He can give reward even if the player is offline. Player Side - Player who win can talk to the NPC to get their prizes. - Player who did not win will not get any. - Player can get the reward even if offline and he can get when he gets online and talk to the npc. NPC Side - The npc can give "zeny, items or cashpoint" - The NPC will give the reward of player who won anytime. - as mention above, it is a convenient npc rewarder, they can get their rewards anytime they want. its like it is stored in sql or something. Quote Share this post Link to post Share on other sites
0 meko 170 Posted May 24, 2017 Here, I made this for you: - script @give FAKE_NPC,{ end; OnCall: .@full$ = implode(.@atcmd_parameters$[0], " "); // put the string back together if ((.@full$ ~= "^([1-9]{1,10}) ([Zz]enys?|[Ii]tems? ([0-9]+)|[Cc]ash(?: ?point)?s?) to (.{1,23})$") == false) { dispbottom("@give : Invalid syntax!"); dispbottom("@give : Proper syntax is @give <amount> <zeny | item <name> | cash> to <player name>"); end; } .@amount = max(1, atoi($@regexmatch$[1])); .@type = ord(strtolower($@regexmatch$[2])); .@item = atoi($@regexmatch$[3]); .@player$ = escape_sql($@regexmatch$[4]); .@player = getcharid(CHAR_ID_ACCOUNT, .@player$); .@char = getcharid(CHAR_ID_CHAR, .@player$); .@count = query_sql(sprintf("SELECT `name`, `char_id`, `account_id` " "FROM `char` " "WHERE `name` = '%s' LIMIT 1;", .@player$), .@player$, .@char, .@player); if (.@count < 1 || .@player < 1 || .@char < 1) { dispbottom("@give : Player not found in database!"); end; } switch (.@type) { case 122: // ZENY if (isloggedin(.@player, .@char)) { charcommand(sprintf("#zeny \"%s\" %i", .@player$, .@amount)); } else { query_sql(sprintf("INSERT INTO `mail` (send_name,dest_name,dest_id,title,time,zeny) " "VALUES ('%s','%s',%i,'%s',%i,%i);", "SRV", .@player$, .@char, "Event Reward", gettimetick(2), .@amount)); } break; case 105: // ITEM if (.@item < 1 || getiteminfo(.@item, 0) < 0) { dispbottom("@give : Item not found!"); end; } if (isloggedin(.@player, .@char)) { getitem(.@item, .@amount, .@player); } else { query_sql(sprintf("INSERT INTO `mail` (send_name,dest_name,dest_id,title,time,amount,nameid) " "VALUES ('%s','%s',%i,'%s',%i,%i,%i);", "SRV", .@player$, .@char, "Event Reward", gettimetick(2), .@amount, .@item)); } break; case 99: // CASH if (isloggedin(.@player, .@char)) { set(getvariableofpc(#CASHPOINTS, .@player), getvariableofpc(#CASHPOINTS, .@player) + .@amount); } else { query_sql(sprintf("UPDATE `acc_reg_num_db` " "SET `index` = `index` + %i " "WHERE `account_id` = %i AND `key` = '#CASHPOINTS';", .@amount, .@player)); } } dispbottom(sprintf("@give : Reward has been delivered to `%s`.", .@player$)); end; OnInit: bindatcmd("give", "@give::OnCall", 0, 99, 0); // <<< MAKE SURE YOU CHANGE THE GROUP ID HERE } Example usage: @give 50 zeny to meko @give 69 cash to meko @give 1 item 508 to meko If the player is online the reward is delivered instantly; If the player is offline the reward is delivered via the mail system (except for Cash rewards) 1 Legend reacted to this Quote Share this post Link to post Share on other sites
0 keough 36 Posted May 25, 2017 @meko I do not have a mail system, it is disabled on my server. Thats why i need an NPC based rewarder. So every player just go to the npc and talk to him whenever thay want. I want all players will have to talk to the npc first. Quote Share this post Link to post Share on other sites
Okay i need this kind of npc and it was cool event rewarder in my past official server.
Share this post
Link to post
Share on other sites