Jump to content

Missingno

Members
  • Posts

    135
  • Joined

  • Last visited

  • Days Won

    4

Everything posted by Missingno

  1. In this case, he could change the variable @total_clicks in my script to .total_clicks and make it a (simple) game lol: prontera,155,181,5 script Click Me!::clickme 757,{ // Increase click count .total_clicks++; // Receive prize if max clicks reached if (.total_clicks == .max_clicks) { message strcharinfo(0), "You have received "+ .amount +" "+ getitemname(.prize_id) +"."; getitem .prize_id, .amount; .total_clicks = 0; // Display click count } else { message strcharinfo(0), "I have been clicked "+ .total_clicks +" times."; } end; OnInit: // Configuration .max_clicks = 100; .prize_id = 909; .amount = 1; end; }
  2. Type 11 runs the script and won't consume the item if an "itemskill" command isn't issued. As it was written, this is the correct entry: 12270,Cold_Medicine,Cold Medicine,11,20,,10,,,,,0xFFFFFFFF,7,2,,,50,,,{ percentheal 25,25; },{},{} It does in fact heal, but a healing effect is not shown. Add this to the item script if you want the special effect: specialeffect2 EF_HEAL; Tested just a moment ago; if this isn't working for you, try it on a fresh copy of rAthena. *Moved to Database Requests
  3. Here's my version; it's very similar to Emistry's, with some notes and variables to make things simple to change around (such as click amount, prize ID, prize amount). prontera,155,181,5 script Click Me!::clickme 757,{ // Increase click count @total_clicks++; // Receive prize if max clicks reached if (@total_clicks == .max_clicks) { message strcharinfo(0), "You have received "+ .amount +" "+ getitemname(.prize_id) +"."; getitem .prize_id, .amount; @total_clicks = 0; // Display click count } else { message strcharinfo(0), "You have clicked me "+ @total_clicks +" times."; } end; OnInit: // Configuration .max_clicks = 100; .prize_id = 909; .amount = 1; end; }
  4. The way you've written it, your mobs will respawn at some random coordinate on ama_test after 1-1.5 seconds. A possibility is that the monsters are respawning, just not in your room; after reviewing the map, there appears to be two rooms separate from each other: To control where the mobs are spawning, specify a rectangular area for the coordinates (i.e. ama_test,10,10,100,100 will spawn mobs between 10,10 and 100,100).
  5. I saw this on another board, and it's in English: /*========================================================= Points to Item Exchanger by Mumbles =========================================================== Request: http://goo.gl/MplDtF =========================================================== Preview: =========================================================== Description: Exchanges items for points and vice-versa at a fixed rate. =========================================================== Compatibility: Optimised for Hercules emulators. =========================================================*/ prontera,164,169,3 script Donation Manager::points2item 4_M_OPERATION,{ /*----------------------------------------------------- Script -----------------------------------------------------*/ mes .npc_name$; mes "Hello there, ^FF8800"+ strcharinfo(0) +"^000000! "+ "Would you exchange your "+ .pod_name$ +" "+ "for "+ .points_name$ +"?"; mes " "; mes "Exchange Rate: "+ .rate +":1"; mes .points_name$ +": [^FF0000"+ getd(.points_var$) +"^000000]"; next; switch (select(implode(.menu_options$, ":"))) { case 1: mes .npc_name$; mes "Okay, come back if you change your mind!"; break; case 2: mes .npc_name$; mes "Please enter the amount of "+ .pod_name$ +" you want to exchange."; do { mes " "; mes "Input ^0000FF0^000000 to cancel."; next; input .@amount; .@total = .@amount / .rate; .@remainder = .@amount % .rate; // Check break input if (!.@amount) { message strcharinfo(0), strnpcinfo(1) +" : Exchange terminated."; close; } // Check total against inventory if (countitem(.pod_id) < .@amount) { mes .npc_name$; mes "^FF0000Please enter a valid amount.^000000"; } // Check remainder [loss prevention] else if (.@remainder) { mes .npc_name$; mes "Sorry, but you must exchange multiples of "+ .rate +"."; } } while (countitem(.pod_id) < .@amount || .@remainder); delitem .pod_id, .@amount; setd .points_var$, getd(.points_var$) + .@total; mes .npc_name$; mes "You've exchanged "+ .@amount +" "+ .pod_name$ +" for "+ .@total +" "+ .points_name$ +". "+ "You now have "+ getd(.points_var$) +" "+ .points_name$ +" and "+ countitem(.pod_id) +" "+ .pod_name$ +"."; break; case 3: mes .npc_name$; mes "Please enter the amount of "+ .points_name$ +" that you want to exchange."; do { mes " "; mes "Input ^0000FF0^000000 to cancel."; next; input .@amount; .@total = .@amount * .rate; // Check break input if (!.@amount) { message strcharinfo(0), strnpcinfo(1) +" : Exchange terminated."; close; } // Check amount against points if (getd(.points_var$) < .@amount) { mes .npc_name$; mes "^FF0000Please enter a valid amount.^000000"; } } while (getd(.points_var$) < .@amount); // Check weight if (!checkweight(.pod_id, .@total)) { mes .npc_name$; mes "^FF0000You're overweight; please store some items.^000000"; break; } setd .points_var$, getd(.points_var$) - .@amount; getitem .pod_id, .@total; mes .npc_name$; mes "You've exchanged "+ .@amount +" "+ .points_name$ +" for "+ .@total +" "+ .pod_name$ +". "+ "You now have "+ getd(.points_var$) +" "+ .points_name$ +" and "+ countitem(.pod_id) +" "+ .pod_name$ +"."; break; } close; /*----------------------------------------------------- Configuration -----------------------------------------------------*/ OnInit: .npc_name$ = "[^0000FFDonation Manager^000000]"; .rate = 20; // Exchange rate (1 point * rate = total PoDs) .pod_id = Donation_Card; // Proof of Donation item ID or constant .pod_name$ = getitemname(.pod_id) +"(s)"; // Proof of Donation item name .points_name$ = "Cash Point(s)"; // Points name .points_var$ = "#CASHPOINTS"; // Points variable // Modifying these options requires updates to the corresponding case setarray .menu_options$[0], "^FF0000>^000000 Cancel", "^0000FF>^000000 Exchange "+ .pod_name$ +" for "+ .points_name$, "^0000FF>^000000 Exchange "+ .points_name$ +" for "+ .pod_name$; end; } Change lines 16 and 126 to make it compatible for rAthena: prontera,164,169,3 script Donation Manager::points2item 4_M_OPERATION,{ prontera,164,169,3 script Donation Manager::points2item 864,{ .pod_id = Donation_Card; .pod_id = 7539; Source: Points to Item Exchanger
  6. Sorry for the late reply; I've updated the script for some backwards compatibility, which fixes that error. Please download the newest version: http://rathena.org/board/files/file/3126-reward-command/
  7. Are you testing on your GM or with a test account? If you're using your GM or an account that has already received a reward, you won't be able to adequately test until the delay has passed for that account. Honestly, you shouldn't use @reloadscript at all; you'd be better off restarting your server, and even then you shouldn't need to for simply swapping out your NPCs. If you can't see console errors, you should probably be running your server in screen; if you're getting socket errors after running your server in screen, check if other processes are already using those ports (like a second instance of rAthena) and kill them.
  8. Did you unload the previous version prior to loading the new one? And you really shouldn't use @reloadscript on a live server. o_O
  9. In rAthena, edit conf/groups.conf for the command(s) you want disabled. If you don't want a group to have the charcommand available and their inherited group(s) do not have a charcommand available, simply do not specify a second option: item: true If the inherited group does have a charcommand but you don't want the inheriting group to have it, specify false for the second option in this format: item: [true, false] To prevent the administrator from having the charcommand, specify the charcommand as false; this will override their all_commands permission: item: [true, false] In eAthena1, change the GM level for the charcommand in conf/atcommand_athena.conf to something higher than the admin's level, or simply do not specify one at all: item: 40, 100 item: 40 1Disclaimer: I cannot guarantee the accuracy of this information, as eAthena is a bit ancient at this point and hasn't seen my desktop in years. d:
  10. Echoing @Capuche, the script is not loading the temporary NPC variables upon login. Here are two different ways to resolve the issue: Move the OnPCLoginEvent label on line 18 to line 12. Place an OnInit label on line 12 and an end; on line 16. Then, change all instances of .@D_Prize, .@D_Amt, and .@Serv_Name$ to .D_Prize, .D_Amt, and .Serv_Name$, respectively.
  11. It's still in their inventory even when equipped, so it would similarly get deleted.
  12. You could just add OR to the query to add an additional item, or you could create a script-based query to delete an array of items; here is the former: DELETE FROM `inventory` WHERE `id` = '7179' OR `id` = '909'; DELETE FROM `cart_inventory` WHERE `id` = '7179' OR `id` = '909'; DELETE FROM `storage` WHERE `id` = '7179' OR `id` = '909'; DELETE FROM `guild_storage` WHERE `id` = '7179' OR `id` = '909'; You can load this script and it will (in theory) automatically delete all the items from the array .@item_id from player inventories and storages, regardless of whether or not they are online; this is untested: - script delete_all -1,{ OnInit: // List of item IDs to delete setarray .@item_id[0], 909, 910, 911; // Build list of account IDs query_sql "SELECT `account_id` FROM `login`", .@account_id; // Loop for each account for (.@i = 0; .@i < getarraysize(.@account_id); .@i++) { // Loop for each item for (.@j = 0; .@j < getarraysize(.@item_id); .@j++) { // Check if account is logged in if (isloggedin(.@account_id[.@i])) { // Delete items from online player inventory attachrid .@account_id[.@i]; delitem .@item_id[.@j], countitem(.@item_id[.@j]); detachrid; } } } // Loop for each item for (.@i = .@j = 0; .@i < getarraysize(.@item_id); .@i++) { // Delete items from all inventories/storages query_sql "DELETE FROM `inventory` WHERE `id` = '"+ .@item_id[.@i] +"'"; query_sql "DELETE FROM `cart_inventory` WHERE `id` = '"+ .@item_id[.@i] +"'"; query_sql "DELETE FROM `storage` WHERE `id` = '"+ .@item_id[.@i] +"'"; query_sql "DELETE FROM `guild_storage` WHERE `id` = '"+ .@item_id[.@i] +"'"; // Build list of item names .@item_name$[.@j++] = getitemname(.@item_id[.@i]); } // Announce deleted items announce "The following items have been deleted: "+ implode(.@item_name$, ", "), bc_all; end; }
  13. Here's a script-based atcommand version of your request: http://rathena.org/board/files/file/3128-adjgm-command/
  14. Version v1.0

    256 downloads

    Description Permanently adjusts a target player's GM group via atcommand.
    Free
  15. File Name: @adjgm command File Submitter: Missingno File Submitted: 22 Feb 2014 File Category: Utilities Content Author: Missingno Description Permanently adjusts a target player's GM group via atcommand. Click here to download this file
  16. Missing a closing quotation mark for your warp command's map name (should be "ra_temin" instead of "ra_temin); here's a compressed version of your script with a proper header as well: ra_temple,120,179,4 script Casino Entrance 939,{ if (countitem(7338) < 1) { mes "[Casino Guard]"; mes "Sorry, no ticket no entry"; } else { delitem 7338, 1; warp "ra_temin", 170, 20; } close; }
  17. What's your Git hash or revision number? Works on a fresh copy of rA, for me. o_o
  18. We are nothing without people around. Developing community wont be need when RO will dead. Summary online of first 10 pages at RMS from different servers around the world, much more in thouthens times then official server online. Most of them using eathena based emulator for sure. That mean, whole Ragnarok Online community in rAthena, hercules, brAthena hands. It's a huge responsibility to the whole Ragnarok Online. I request for the brain of rAthena development team, cause there is no 2006 right now out the window, and RO community mostly by cheats, bots decreased very well by last 2-3 years. Without basic protection agains current software what manipulate by packets with server-side like it want, rAthena will be nothing. Harmony is dead. There is no more alternative to protect RO against first wave of cheaters. Please, we need a plan i guess, how it possible to protect server-side from some famous hacks, tricks. The first thing, i guess must be encrypting headers of packets between server/client, like it work at Hercules. There's more than just WPE that can be used to cheat, and Harmony wasn't exactly groundbreaking protection either. Even so, there are multiple different ways to detect and prevent cheating, a lot of which can be done through scripting alone. To say it's the responsibility of rAthena, Hercules, or any RO emulation project to provide anti-cheat protection is a bit absurd; even some of the best anti-cheat systems are vulnerable to being bypassed.
  19. My name isn't Santa Poring though... Place the script in your npc (probably somewhere like npc/custom/) and then type @loadnpc npc/custom/reward.txt in-game. After you've run the SQL query in your logs schema, type @reward in-game to use the command (default syntax: @reward <preset> <player name>); there's no NPC to click, since the script is activated via @reward.
  20. Version v1.1.4

    243 downloads

    Description Allows for guildmaster to grant or revoke access to guild storage. Supports guildmaster changes and expulsions. Create this table in your main schema:CREATE TABLE IF NOT EXISTS `guild_storage_access` ( `guild_id` int(11) NOT NULL, `char_id` int(11) NOT NULL, PRIMARY KEY (`char_id`)) ENGINE=MyISAM;
    Free
  21. File Name: @gstorage command File Submitter: Missingno File Submitted: 21 Feb 2014 File Category: Utilities Content Author: Missingno Description Allows for guildmaster to grant or revoke access to guild storage. Supports guildmaster changes and expulsions. Create this table in your main schema:CREATE TABLE IF NOT EXISTS `guild_storage_access` ( `guild_id` int(11) NOT NULL, `char_id` int(11) NOT NULL, PRIMARY KEY (`char_id`)) ENGINE=MyISAM; Click here to download this file
  22. Here's a script-based atcommand version with SQL logging: http://rathena.org/board/files/file/3126-reward-command/
  23. Version v1.1.1

    666 downloads

    Description Allows for preset or user-defined rewards via atcommand. Announce and logging options are also available. Create this table in your logs schema:CREATE TABLE IF NOT EXISTS `rewardlog` ( `id` int(11) unsigned NOT NULL auto_increment, `account_id` int(11) NOT NULL, `staff_name` varchar(255) NOT NULL, `item_amount` int(11) NOT NULL, `item_id` int(11) NOT NULL, `item_name` varchar(255) NOT NULL, `char_id` int(11) NOT NULL, `player_name` varchar(255) NOT NULL, `when` datetime NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM;
    Free
  24. File Name: @reward command File Submitter: Missingno File Submitted: 21 Feb 2014 File Category: Utilities Content Author: Missingno Description Allows for preset or user-defined rewards via atcommand. Announce and logging options are also available. Create this table in your logs schema:CREATE TABLE IF NOT EXISTS `rewardlog` ( `id` int(11) unsigned NOT NULL auto_increment, `account_id` int(11) NOT NULL, `staff_name` varchar(255) NOT NULL, `item_amount` int(11) NOT NULL, `item_id` int(11) NOT NULL, `item_name` varchar(255) NOT NULL, `char_id` int(11) NOT NULL, `player_name` varchar(255) NOT NULL, `when` datetime NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM; Click here to download this file
×
×
  • Create New...