From 3629aebb96959afc56cf04d1f2fc4a9f03e94183 Mon Sep 17 00:00:00 2001 From: Thorbjørn Lindeijer Date: Sat, 25 Feb 2012 21:18:46 +0100 Subject: Merged the example client and server data It's easier to just talk about world data and to modify it as a whole. If there is really a need to separate it, a project can still choose to do that (and in whatever suitable way). There is no need to enforce this separation or to do it in our example. Reviewed-by: Erik Schilling --- example/serverdata/scripts/crafting.lua | 99 --------------------------------- 1 file changed, 99 deletions(-) delete mode 100644 example/serverdata/scripts/crafting.lua (limited to 'example/serverdata/scripts/crafting.lua') diff --git a/example/serverdata/scripts/crafting.lua b/example/serverdata/scripts/crafting.lua deleted file mode 100644 index eae26a4..0000000 --- a/example/serverdata/scripts/crafting.lua +++ /dev/null @@ -1,99 +0,0 @@ -------------------------------------------------------------- --- Example crafting script file -- --- -- --- This file allows you to implement your own crafting -- --- system. -- ----------------------------------------------------------------------------------- --- Copyright 2011 Manasource Development Team -- --- -- --- This file is part of Manasource. -- --- -- --- Manasource is free software; you can redistribute it and/or modify it -- --- under the terms of the GNU General Public License as published by the Free -- --- Software Foundation; either version 2 of the License, or any later version. -- ----------------------------------------------------------------------------------- - --- This function is called by the game engine when a character tries to craft --- something from items in its inventory -function on_craft(ch, recipe) - -- ch is the crafting character - -- - -- recipe is a table with the ingredients. - -- it is a common 1-based array. each element of this array is a table with the - -- two keys "id" and "amount". - -- The engine has already checked that the character owns enough of those things, - -- so you needn't do this again. - - -- uncomment one (but not both!) of the following three lines to enable the - -- example crafting systems - - mana.chat_message(ch, "There is no crafting in this game world.") - --craft_strict(ch, recipe) - --craft_lax(ch, recipe) -end - - --- a primitive example crafting system which cares about item order and exact amount -function craft_strict(ch, recipe) - if (recipe[1].id == 8 and recipe[1].amount == 2 and -- has two iron - recipe[2].id == 9 and recipe[2].amount == 1) -- and one wood - then - mana.chr_inv_change(ch, - 8, -2, --take away the iron - 9, -1, --take away the wood - 5, 1 ) -- give a sword - mana.chat_message(ch, "You've crafted a sword") - return - end - mana.chat_message(ch, "This wouldn't create anything useful") -end - --- a primitive example crafting system which doesn't care about item order --- and amount. It even allows to mention the same item multiple times. -function craft_lax(ch, recipe) - recipe = make_condensed_and_sorted_item_list(recipe) - - if (recipe[1].id == 8 and recipe[1].amount >= 2 and -- has at least two iron - recipe[2].id == 9 and recipe[2].amount >= 1) -- and at least one wood - then - mana.chr_inv_change(ch, - 8, -2, --take away the iron - 9, -1, --take away the wood - 5, 1 ) -- give a sword - mana.chat_message(ch, "You've crafted a sword") - return - end - mana.chat_message(ch, "This wouldn't create anything useful") -end - --- this turns multiple occurences of the same item into one by adding up --- their amounts and sorts the recipe by item ID. --- This makes stuff a lot easier when your crafting system isn't supposed to care --- about the order items are in. -function make_condensed_and_sorted_item_list(recipe) - - local condensed = {} - for index, item in pairs(recipe) do - if condensed[item.id] == nil then - condensed[item.id] = item.amount - else - condensed[item.id] = condensed[item.id] + item.amount - end - end - - local sorted = {} - for id, amount in pairs(condensed) do - local item = {} - item.id = id - item.amount = amount - table.insert(sorted, item) - end - - table.sort(sorted, function(item1, item2) - return (item1.id < item2.id) - end - ) - - return sorted - -end \ No newline at end of file -- cgit