約 5,705,421 件
https://w.atwiki.jp/atuserver/pages/87.html
atuserverはNewstyleの経済サーバーです。 プレイヤー間での取引や所持金ランキング上位を目指すことはもちろん、オリジナルBOSSと戦ったり最強装備を集めたりなどそれぞれにあった遊び方を楽しめるサーバーです。 主に次のようなやり込み要素があります! 所持金1位を目指してお金稼ぎ 最強BOSSと戦ったり、レイドBOSSを協力して倒す 一括破壊などの便利な追加エンチャントを集める ランクを上げてSランクを目指す スキルの使える最強武器をコレクションする 定期的に行われるイベントに参加して報酬をゲットする 1.参加方法 統合版、JAVA版どちらからも参加することができます。 トップページにあるサーバーアドレスを入力し、接続してください。 2.まず初めに まずはサーバールールを読んでできれば公式Discordにも参加しましょう。(お知らせや攻略情報などはほぼDiscordに載ってます)また、公式wikiもチェックすることを推奨します。ルールを読めたら、インベントリにあるひまわりのメニューを押してGUIが出てきたら メニュー テレポートGUI(コンパス) 経済ワールドにテレポート(エメラルド) を押してください。(もしくはチャットに/spawnを入力) そのまま前に進むと共有倉庫があるのでそこから物資を調達することができます。 3.資源ワールドについて 採掘や木の伐採などは資源ワールドで行ってください。資源ワールドには メニュー テレポートGUI 資源ワールドにテレポート(ダイヤモンド) から行けます。初期地の周りは荒れていることもあるので注意してください。資源ワールドはネザー版・エンド版もあります。資源調達は資源ワールド、建築やshopなどは経済ワールドのイメージです。(資源ワールドは不定期にリセットされるため大切なものは置かないようにしてください。) 4.Rank上げ RankはD~Sまであり、ランクを上げるとデイリーリワードが解放されたり飛べるようになります。Rankを買うには メニュー RANKSHOP(花火の星) で選べます。ランクで解放される権限の詳細は公式wikiをご覧ください。 5.お金稼ぎ Rankを上げたり、shopで物を買うにはお金が必要になります。お金はAdminShopでアイテムを売ったり、Jobsで職業に就くことで稼ぐことができます。
https://w.atwiki.jp/akasatanahama/pages/105.html
概要 インベントリを持ち、アイテムを保持できるTileEntityを追加する。 GUIの実装はしていない。 ソースコード AluminiumMod.java package tutorial.aluminiummod; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; @Mod(modid = AluminiumMod.MODID, name = AluminiumMod.MODNAME, version = AluminiumMod.VERSION) public class AluminiumMod { public static final String MODID = "AluminiumMod"; public static final String MODNAME = "Aluminium Mod"; public static final String VERSION = "1.0.0"; public static Block chestAluminium; @EventHandler public void perInit(FMLPreInitializationEvent event) { chestAluminium = new BlockAluminiumChest() .setBlockName("chestAluminium") .setBlockTextureName("aluminiummod Aluminium_Chest"); GameRegistry.registerBlock(chestAluminium, "chestAluminium"); GameRegistry.registerTileEntity(TileEntityAluminiumChest.class, "TileEntityAluminiumChest"); } } BlockAluminiumChest.java package tutorial.aluminiummod; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class BlockAluminiumChest extends Block implements ITileEntityProvider { private Random random = new Random(); public BlockAluminiumChest() { super(Material.rock); this.setCreativeTab(CreativeTabs.tabDecorations); this.setHardness(5.0F); this.setResistance(1.0F); this.setStepSound(soundTypeMetal); isBlockContainer = true; } @Override public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityAluminiumChest(); } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { // TileEntityを取得し、プレイヤーが手にアイテムを持っていないなら取り出し、持っているなら入れる。 TileEntity tileEntity = world.getTileEntity(x, y, z); if (tileEntity == null || !(tileEntity instanceof TileEntityAluminiumChest)) return false; TileEntityAluminiumChest chest = (TileEntityAluminiumChest) tileEntity; if (player.getHeldItem() == null) { player.inventory.mainInventory[player.inventory.currentItem] = chest.tryExportItemStack(); } else { if (chest.tryImportItemStack(player.getHeldItem())) { player.inventory.mainInventory[player.inventory.currentItem] = null; } } return true; } @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { // TileEntityの内部にあるアイテムをドロップさせる。 TileEntityAluminiumChest tileentity = (TileEntityAluminiumChest) world.getTileEntity(x, y, z); if (tileentity != null) { for (int i = 0; i tileentity.getSizeInventory(); i++) { ItemStack itemStack = tileentity.getStackInSlot(i); if (itemStack != null) { float f = random.nextFloat() * 0.6F + 0.1F; float f1 = random.nextFloat() * 0.6F + 0.1F; float f2 = random.nextFloat() * 0.6F + 0.1F; while (itemStack.stackSize 0) { int j = random.nextInt(21) + 10; if (j itemStack.stackSize) { j = itemStack.stackSize; } itemStack.stackSize -= j; EntityItem entityItem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemStack.getItem(), j, itemStack.getItemDamage())); if (itemStack.hasTagCompound()) { entityItem.getEntityItem() .setTagCompound(((NBTTagCompound) itemStack.getTagCompound().copy())); } float f3 = 0.025F; entityItem.motionX = (float) random.nextGaussian() * f3; entityItem.motionY = (float) random.nextGaussian() * f3 + 0.1F; entityItem.motionZ = (float) random.nextGaussian() * f3; world.spawnEntityInWorld(entityItem); } } } world.func_147453_f(x, y, z, block); } super.breakBlock(world, x, y, z, block, meta); } } TileEntityAluminiumChest.java package tutorial.aluminiummod; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; public class TileEntityAluminiumChest extends TileEntity implements IInventory { protected ItemStack[] itemStacks = new ItemStack[54]; protected byte importingSlot; protected byte exportingSlot; public boolean tryImportItemStack(ItemStack itemStack) { for (int i = 0; i this.getSizeInventory(); i++) { importingSlot = this.getNextSlot(importingSlot); if (itemStacks[importingSlot] == null) { itemStacks[importingSlot] = itemStack.copy(); return true; } } return false; } public ItemStack tryExportItemStack() { for (int i = 0; i this.getSizeInventory(); i++) { exportingSlot = this.getNextSlot(exportingSlot); if (itemStacks[exportingSlot] != null) { ItemStack itemStack = itemStacks[exportingSlot].copy(); itemStacks[exportingSlot] = null; return itemStack; } } return null; } protected byte getNextSlot(byte slot) { slot++; if (slot = this.getSizeInventory()) slot = 0; return slot; } @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); NBTTagList nbttaglist = new NBTTagList(); for (int i = 0; i itemStacks.length; i++) { if (itemStacks[i] == null) continue; NBTTagCompound nbt1 = new NBTTagCompound(); nbt1.setByte("Slot", (byte) i); itemStacks[i].writeToNBT(nbt1); nbttaglist.appendTag(nbt1); } nbt.setTag("Items", nbttaglist); nbt.setByte("ImportingSlot", importingSlot); nbt.setByte("ExportingSlot", exportingSlot); } @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); NBTTagList nbttaglist = nbt.getTagList("Items", 10); itemStacks = new ItemStack[54]; for (int i = 0; i nbttaglist.tagCount(); i++) { NBTTagCompound nbt1 = nbttaglist.getCompoundTagAt(i); byte b0 = nbt1.getByte("Slot"); if (0 = b0 b0 itemStacks.length) { itemStacks[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } importingSlot = nbt.getByte("ImportingSlot"); exportingSlot = nbt.getByte("ExportingSlot"); } @Override public int getSizeInventory() { return 54; } @Override public ItemStack getStackInSlot(int slot) { return itemStacks[slot]; } @Override public ItemStack decrStackSize(int slot, int amount) { if (itemStacks[slot] == null) return null; ItemStack itemstack; if (itemStacks[slot].stackSize = amount) { itemstack = itemStacks[slot]; itemStacks[slot] = null; return itemstack; } itemstack = itemStacks[slot].splitStack(amount); if (itemStacks[slot].stackSize 1) { itemStacks[slot] = null; } return itemstack; } @Override public ItemStack getStackInSlotOnClosing(int slot) { return null; } @Override public void setInventorySlotContents(int slot, ItemStack itemStack) { itemStacks[slot] = itemStack; if (itemStack != null itemStack.stackSize this.getInventoryStackLimit()) { itemStack.stackSize = this.getInventoryStackLimit(); } } @Override public boolean hasCustomInventoryName() { return false; } @Override public String getInventoryName() { return "container.AluminiumMod.AluminiumChest"; } @Override public int getInventoryStackLimit() { return 64; } @Override public boolean isUseableByPlayer(EntityPlayer player) { return worldObj.getTileEntity(xCoord, yCoord, zCoord) != this ? false player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) = 64.0D; } @Override public void openInventory() {} @Override public void closeInventory() {} @Override public boolean isItemValidForSlot(int slot, ItemStack itemStack) { return true; } } 解説 GameRegistry void registerTileEntity(Class ? extends TileEntity tileEntityClass, String id) TileEntityをマップに追加する処理。 これをやらないとreadFromNBTが呼ばれず、エラーが出る。 Block boolean isBlockContainer TileEntityを持つブロックかどうか。 使われてないようだが一応設定しておく。 boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) ブロックが右クリックされた時の処理。 void breakBlock(World world, int x, int y, int z, Block block, int meta) ブロックが破壊された時の処理。 ITileEntityProvider TileEntityを持つブロックのためのインターフェース。 TileEntity createNewTileEntity(World world, int meta) TileEntityのインスタンスを生成し返す。 TileEntity void writeToNBT(NBTTagCompound nbt) 引数のNBTにTileEntityのデータを書き込む処理。 void readFromNBT(NBTTagCompound nbt) 引数のNBTからTileEntityのデータを読み込む処理。 IInventory インベントリを持つTileEntityのためのインターフェース。 int getSizeInventory() インベントリのスロット数を返す。 ItemStack getStackInSlot(int slot) 引数のスロットに入っているItemStackを返す。 ItemStack decrStackSize(int slot, int amount) 第一引数のスロットに入ってるItemStackのスタック数を第二引数の量減らす。 ItemStack getStackInSlotOnClosing(int slot) GUIが閉じられた時に、引数のスロットの中身を返し、消す処理。 エンチャントテーブルなど、GUIを閉じたときにドロップするものが使う。 void setInventorySlotContents(int slot, ItemStack itemStack) 引数のスロットの中身を設定する。 boolean hasCustomInventoryName() 名札でつけられた名前を持つかどうか。 String getInventoryName() デフォルトの名前を返す。 int getInventoryStackLimit() インベントリのスタック数の最大値を返す。 boolean isUseableByPlayer(EntityPlayer player) 引数のプレイヤーがGUIを開けるかどうか。 void openInventory() GUIを開いたときの処理。 void closeInventory() GUIを閉じたときの処理。 boolean isItemValidForSlot(int slot, ItemStack itemStack) ホッパーなどが引数のスロットにアクセスできるかを返す。 使用例 プレゼントボックスを追加している部分。 +オファレンMOD OfalenModCore.java package nahama.ofalenmod; /*略*/ /** * @author Akasata Nahama */ @Mod(modid = OfalenModCore.MODID, name = OfalenModCore.MODNAME, version = OfalenModCore.VERSION) public class OfalenModCore { public static final String MODID = "OfalenMod"; public static final String MODNAME = "Ofalen Mod"; public static final String MCVERSION = "1.7.10"; public static final String OMVERSION = "1.1.0"; public static final String VERSION = "[" + MCVERSION + "]" + OMVERSION; /*略*/ /** 初期化前処理。 */ @EventHandler public void preInit(FMLPreInitializationEvent event) { /*略*/ OfalenModBlockCore.registerBlock(); /*略*/ } /*略*/ } OfalenModBlockCore.java package nahama.ofalenmod.core; /*略*/ public class OfalenModBlockCore { /*略*/ public static Block boxPresentOfalen; /** ブロックを登録する処理。 */ public static void registerBlock() { /*略*/ boxPresentOfalen = new BlockPresentBox() .setBlockName("boxPresentOfalen") .setBlockTextureName("ofalenmod present_box"); GameRegistry.registerBlock(boxPresentOfalen, "boxPresentOfalen"); GameRegistry.registerTileEntity(TileEntityPresentBox.class, "TileEntityOfalenPresentBox"); } } BlockPresentBox.java package nahama.ofalenmod.block; /*略*/ public class BlockPresentBox extends Block implements ITileEntityProvider { private Random random = new Random(); /** 0 下,1 上,2 横,3 クリスマス下,4;クリスマス上,5 クリスマス横 */ private IIcon[] iicon = new IIcon[6]; public BlockPresentBox() { super(Material.sponge); this.setCreativeTab(OfalenModCore.tabOfalen); this.setHardness(1.0F); this.setResistance(1.0F); this.setStepSound(Block.soundTypeCloth); } @Override public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityPresentBox(); } /*略*/ /** ブロックが破壊された時の処理。 */ @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { // TileEntityの内部にあるアイテムをドロップさせる。 TileEntityPresentBox tileentity = (TileEntityPresentBox) world.getTileEntity(x, y, z); if (tileentity != null) { for (int i = 0; i tileentity.getSizeInventory(); i++) { ItemStack itemStack = tileentity.getStackInSlot(i); if (itemStack != null) { float f = random.nextFloat() * 0.6F + 0.1F; float f1 = random.nextFloat() * 0.6F + 0.1F; float f2 = random.nextFloat() * 0.6F + 0.1F; while (itemStack.stackSize 0) { int j = random.nextInt(21) + 10; if (j itemStack.stackSize) { j = itemStack.stackSize; } itemStack.stackSize -= j; EntityItem entityItem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemStack.getItem(), j, itemStack.getItemDamage())); if (itemStack.hasTagCompound()) { entityItem.getEntityItem().setTagCompound(((NBTTagCompound) itemStack.getTagCompound().copy())); } float f3 = 0.025F; entityItem.motionX = (float) random.nextGaussian() * f3; entityItem.motionY = (float) random.nextGaussian() * f3 + 0.1F; entityItem.motionZ = (float) random.nextGaussian() * f3; world.spawnEntityInWorld(entityItem); } } } world.func_147453_f(x, y, z, block); } super.breakBlock(world, x, y, z, block, meta); } /** ブロックのアイコンを登録する処理。 */ @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister register) { for (int i = 0; i 6; i++) { iicon[i] = register.registerIcon(this.getTextureName() + "-" + i); } } /** ブロックのアイコンを返す。 */ @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { int i = 2; if (side == 0) i = 0; if (side == 1) i = 1; if (OfalenModAnniversaryHandler.isChristmas) i += 3; return iicon[i]; } } TileEntityPresentBox.java package nahama.ofalenmod.tileentity; import nahama.ofalenmod.handler.OfalenModAnniversaryHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; public class TileEntityPresentBox extends TileEntity implements IInventory { protected ItemStack[] itemStacks = new ItemStack[54]; protected String owner; /*略*/ @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); NBTTagList nbttaglist = new NBTTagList(); for (int i = 0; i itemStacks.length; i++) { if (itemStacks[i] == null) continue; NBTTagCompound nbt1 = new NBTTagCompound(); nbt1.setByte("Slot", (byte) i); itemStacks[i].writeToNBT(nbt1); nbttaglist.appendTag(nbt1); } nbt.setTag("Items", nbttaglist); nbt.setString("Owner", owner); } @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); NBTTagList nbttaglist = nbt.getTagList("Items", 10); itemStacks = new ItemStack[54]; for (int i = 0; i nbttaglist.tagCount(); i++) { NBTTagCompound nbt1 = nbttaglist.getCompoundTagAt(i); byte b0 = nbt1.getByte("Slot"); if (0 = b0 b0 itemStacks.length) { itemStacks[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } owner = nbt.getString("Owner"); } /** インベントリのスロット数を返す。 */ @Override public int getSizeInventory() { return 54; } /** スロットのアイテムを返す。 */ @Override public ItemStack getStackInSlot(int slot) { return itemStacks[slot]; } /** スロットのスタック数を減らす。 */ @Override public ItemStack decrStackSize(int slot, int amount) { if (itemStacks[slot] == null) return null; ItemStack itemstack; if (itemStacks[slot].stackSize = amount) { itemstack = itemStacks[slot]; itemStacks[slot] = null; return itemstack; } itemstack = itemStacks[slot].splitStack(amount); if (itemStacks[slot].stackSize 1) { itemStacks[slot] = null; } return itemstack; } @Override public ItemStack getStackInSlotOnClosing(int slot) { return null; } /** スロットの中身を設定する。 */ @Override public void setInventorySlotContents(int slot, ItemStack itemStack) { itemStacks[slot] = itemStack; if (itemStack != null itemStack.stackSize this.getInventoryStackLimit()) { itemStack.stackSize = this.getInventoryStackLimit(); } } /** 金床で設定された名前を持つかどうか。 */ @Override public boolean hasCustomInventoryName() { return false; } /** インベントリの名前を返す。 */ @Override public String getInventoryName() { return "container.OfalenMod.PresentBox"; } /** このインベントリの最大スタック数を返す。 */ @Override public int getInventoryStackLimit() { return 64; } /** プレイヤーが使用できるかどうか。 */ @Override public boolean isUseableByPlayer(EntityPlayer player) { if (owner != null !player.getCommandSenderName().equals(owner)) return false; return worldObj.getTileEntity(xCoord, yCoord, zCoord) != this ? false player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) = 64.0D; } @Override public void openInventory() {} @Override public void closeInventory() {} /** スロットにアクセスできるかどうか。 */ @Override public boolean isItemValidForSlot(int slot, ItemStack itemStack) { return false; } } コメント この項目に関する質問などをどうぞ。 名前
https://w.atwiki.jp/udonko_m/pages/10.html
当wiki内 プラグイン/ニュース プラグイン/編集履歴 プラグイン/アーカイブ プラグイン/動画(Youtube) プラグイン プラグイン/コメント 公式ガイド https //w.atwiki.jp/guide/ プラグイン一覧 https //w.atwiki.jp/guide/pages/265.html ↓ここからコピー メニュー トップページ プラグイン紹介 メニュー 右メニュー リンク @wiki @wikiご利用ガイド ここを編集 ↓ここもコピー @wikiへようこそ ウィキはみんなで気軽にホームページ編集できるツールです。 このページは自由に編集することができます。 メールで送られてきたパスワードを用いてログインすることで、各種変更(サイト名、トップページ、メンバー管理、サイドページ、デザイン、ページ管理、等)することができます まずはこちらをご覧ください。 @wikiの基本操作 編集モード・構文一覧表 @wikiの設定・管理 分からないことは? @wiki ご利用ガイド よくある質問 @wiki更新情報 @wikiへのお問合せフォーム 等をご活用ください アットウィキモードでの編集方法 文字入力 画像入力 表組み ワープロモードでの編集方法 文字入力 画像入力 表組み その他にもいろいろな機能満載!! @wikiプラグイン一覧 @wikiかんたんプラグイン入力サポート 他のWIKIが気になる方はこちら VIPで初心者がゲーム実況するには@ Wiki AcesHigh Wiki Plus! REBELLION Z-LIMITED VPVP wiki エルプリ攻略wiki バグ・不具合を見つけたら? 要望がある場合は? お手数ですが、お問合せフォームからご連絡ください。
https://w.atwiki.jp/akasatanahama/pages/118.html
C /forgeでcmdを開きgradle build - さくら 2016-04-02 12 39 43 (申し訳ないです 間違えて投稿してしまいました)と打っても、’gradle’は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と出てしまいます。 どうしたら良いか申し訳ないですが教えて下さい。(gradlew gradlew.bat build.gradle これらのファイルは入っています) - さくら 2016-04-02 12 43 15 (追記です 連続書き込み申し訳ありません) 前には4回ほど出力に成功しています。その時はgradlew.batを開いてからcmdを開くとできていたのですが、やはり出来ません - さくら 2016-04-02 12 46 54 Gradleを再インストールしたり、システム環境変数の設定をやり直したりしてみてください。私も理解できていない部分があるので、あまり役に立たないかもしれません。すみません。 - 赤砂蛇凪浜 2016-04-04 07 42 05 返信有り難うございます gradleをforgeと同じ場所においてしまっていたのでProgramFiles(×86)に再度入れたところ無事出来ました!ありがとうございました! お騒がせしました - さくら 2016-04-04 12 19 05 最新のeclipse(4.6Neon,64bit,standard)をダウンロード、解凍し、ワークスペースの設定までは順調に行えたのですが、「実行」ボタンを押しても「実行構成」 - モアイさん 2016-09-25 12 42 01 ↑続き 「実行構成」という画面が出てきてMincraftを起動できません。どのような設定を行えばよいのでしょうか? - モアイさん 2016-09-25 12 43 25 forgeのワークスペース設定に失敗している可能性があります。"gradlew setupDecompWorkspace"や"gradlew eclipse"をもう一度実行してみてください。 - 赤砂蛇凪浜 2016-09-26 18 14 20 ありがとうございます!正常にminecraftが起動しました! - モアイさん 2016-09-27 18 47 29 cドライブのProgram FilesにGradleというファイルを作り、その後gradle3.1,binといってアドレスのところにcmd.exeとうってコマンドプロンプトを起動し、gradleを実行してもFAILURE Build failed with an exceptionとでてBUILD FAILEDとでます。ご指導お願いします - shu_hrg 2016-10-23 20 56 31 ミスのようですのでコメントを編集させていただきました。コマンドプロンプトは"C /forge"で起動してください。解説がわかりにくかったため修正しました。 - 赤砂蛇凪浜 2016-10-24 08 08 16 Forgeなんですが、1.8以降のForgeには" / src"がありません。代わりの”□mdk"でもよろしいでしょうか? - でんでん 2016-12-10 07 23 22 問題ありません。1.8以降のチュートリアルも今後実装予定です。 - Tom Kate 2016-12-10 10 37 10 ありがとうございます。楽しみに待ってます。 - でんでん 2016-12-24 17 56 38
https://w.atwiki.jp/pokehakkusyosinnsya/pages/18.html
チュートリアル3 -イベント制作- 参照先の変更は理解できましたか? 今回扱うのは セリフスクリプト 移動スクリプト フラグのオンオフ 分岐スクリプト になります。 話しかけると応答するNPC、踏むと発動するイベントを扱います。 ポケモン改造研究所-そして伝説へ-で同様の内容を扱っていますが、ツールや用語を最新にして説明します。 はじめにValzHexでROMを開いておきます。 前回同様ValzHexで空き容量を探します。 FF FF FF FF……と続いているところが空き容量です。 まずはNPCに話しかけたらセリフを返してくれる、いわゆる村人Aのようなイベントを作りましょう。 AM(AdvanceMap)を開いていると共有違反を起こしてしまうので、AMは後ほど開きます。 セリフスクリプト まずはセリフスクリプトを組みます。 これは簡単です。 空き容量に以下のように書き込みます。 0F 00 @@ @@ @@ 08 09 02 02 実際には@は入力できないので、たとえば空き容量0x6D6C00に書き込むとしたら、 0F 00 10 6C 6D 08 09 02 02と、1つ下のアドレスを試しに指定してみましょう。 0x6D6C10のセリフのアドレスを指定しています。 保存したのち、PTEを開き、オフセットに6D6C10を指定します。 好きなセリフを入力したのち、保存します。 AMを開き、好きなNPCに$6D6C00を指定してみましょう。NPCはAMで新規で追加して構いません。 移動スクリプト こちらは人Noを把握する必要があるので、あらかじめ先にAMで作業するのが良さそうです。 AMを開いたら、動かしたいNPCを決めます。 流れとしては、 1.話しかけるとセリフを言う 2.移動したのち戻ってくる という流れにしてみましょうか。 もちろん好きなように組んでもらって構いません。 あらかじめ決めた空き容量のアドレスを覚えて、 動かしたいNPCのオフセットのところに空き容量のアドレスを記述して保存しておきます。 人Noを覚えたらAMを閉じ、ValzHexでその空き容量にセリフスクリプトを書き、その続きから記述します。 0F 00 @@ @@ @@ 08 09 02 4F 03 00 @@ @@ @@ 08 51 00 00 02 太字の03は人Noです。任意の人Noにしてください。 0Fスクリプトは先程と違い、最後の02が消えているのがポイントです。 02はスクリプト終了なので、一番最後の02を取り除き、51 00 00の一番後ろに02を付けています。 09 02となっているのは、09スクリプトで02を指定しているだけなので、スクリプト終了の02とは違います。 4Fスクリプトの@@は移動コマンドのアドレスを指定します。 資料wikiの移動コマンドのページを参照してください。 https //wikiwiki.jp/pokemonhack/%E7%A7%BB%E5%8B%95%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89 主人公を動かしたい場合は人Noの部分をFFに指定します。 画面を動かしたい場合は資料wikiのイベントスクリプトテンプレートのページを参照してください。 https //wikiwiki.jp/pokemonhack/%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88 フラグのオンオフ フラグを設定しましょう。 AMでNPCの人IDという項目に任意のフラグを設定しておくと、スクリプトでそのフラグをオフにしたときにNPCが消去されます。 また、フラグで分岐するスクリプトを組んでおき、フラグオンの場合はイベントの最後にそのフラグをオフにするといった処理を入れることで、一度しか実行できないイベントなどが行えます。 踏むと発動するスクリプトにも設定できるので、重要なスクリプトになります。 新規で作るポケハックなら既存のフラグ(4050以降)を潰しても良いですし、40BD以降を使用しても構いません。 下記ページをよく読み、避けておくフラグを考えてください。 https //wikiwiki.jp/pokemonhack/%E3%83%95%E3%83%A9%E3%82%B0 落ちているモンスターボールのスクリプトは、既存のスクリプトをコピペしてアイテムIDやフラグのみ変更すると扱いやすいでしょう。 また、人IDが設定されているオブジェクトをイベントスクリプト 53 va va で消すと、 その人IDが自動的に消費されるということも覚えておいてください。 ↑だと、ライバルの人No.が3なので、 53 03 00 によりライバルを消すことができ、その際にライバルの人IDである 0411 が消費されます。 人IDを復活させる(=消費されていない状態に変える)イベントスクリプトは 2A XX XX です。(XX XX は人ID。)人IDを復活させると、消えていたオブジェクトも再び現れます。 リヴァイアサンのブログ http //blog.livedoor.jp/maidara/archives/12710773.html より引用 人ID(NPCに設定されたフラグのこと)が関与しない場合は下記の通りです。 16 RR RR XX XX 02 RRにはフラグNo(イベント用変数とも)が入ります。 40BDの場合は、リトルエンディアンにして、BD 40です。 XX XX フラグNoの値を代入します。 40BDに0001を入れるなら、 16 BD 40 01 00 02 となります。(最後の02はイベント終了スクリプト) 基本的には0000になっているものだと思ってください。0001などが代入されればオフの認識で大丈夫です。 0003なども代入できます。 使い道としては同じフラグを利用してフラグの中身で分岐するときでしょうか。 1回目に話しかけたときはフラグオフの状態なのでそこに分岐、 2回目に話しかけたときはフラグオン(0001が代入)なので2回目の会話に分岐、最後に0002を代入 3回目に話しかけたときは・・・ こういうときは加算スクリプトだとシンプルですね。 https //wikiwiki.jp/pokemonhack/%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88#me86f2bb 踏むと発動するスクリプトに関しては以下のページを参照してください。 http //blog.livedoor.jp/maidara/archives/13438021.html また、システムフラグ(スタートメニューに図鑑やポケモンなどを表示したり、ジムバッジを入手、ランニングシューズなど)は オンオフのみでいいので、 29スクリプトや2Aスクリプト、2Bスクリプトの分岐などを試してみてください。 https //wikiwiki.jp/pokemonhack/%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88#i5224562 分岐スクリプト では、1度目に話しかけたときと2度目に話しかけたときで話すセリフを変えてみましょう。 引き続き40BDを例にとってみます。その次の40BEでもいいです。 2B BD 40 06 01 @@ @@ @@ 08 0F 00 ~~ ~~ ~~ 08 09 02 02 @@ @@ @@で飛んだ先 0F 00 -- -- -- 08 09 02 2A BD 40 02 2Bスクリプトはフラグが0001かを比較します。 06 01 @@ @@ @@ 08は、BD 40が06 01(一致)するときに、@@ @@ @@ 08のアドレスにジャンプする処理です。 一致しなければ、ここを素通りして08の後ろから実行します。 40BDがフラグオンであれば、@@ @@ @@で飛んだ先の処理を実行します。 2回目でセリフを変えたいので、一番最後に2A BD 40 02を入れフラグをオフにします。 単純にフラグかオンかオフで良い場合は29や2Aスクリプトを使います。 イベント変数0x8000番台(値を一次保存する場所)や 中身に格納する値によって分岐させたい時(00001以外を入れる場合)は16スクリプトを使います。 説明は以上です。 NPCにイベントを設定する 踏むと発動するスクリプト フラグのオンオフ 条件分岐 が理解できましたでしょうか。 理解できるまで資料wikiのイベントスクリプトのページ、イベントスクリプトテンプレートのページを熟読してください。 https //wikiwiki.jp/pokemonhack/ リヴァイアサンのブログも参考になります。 http //blog.livedoor.jp/maidara/archives/12870751.html ここまでのチュートリアルができていれば、新規でマップが作れますし、トレーナーデータを設定して 次のチャートは画像導入になります。
https://w.atwiki.jp/civilization/pages/2392.html
初心者ガイド/チュートリアル詳説/10.第二都市の建設 前ページ次ページ初心者ガイド/チュートリアル詳説 初心者ガイド/チュートリアル詳説/10.第二都市の建設 [#me8d643b] 開拓者の生産 [#r24929d4] 第二都市の建設 [#xa5fae3d] 開拓者の生産 原文 訳 We should start planning to expand your Civilization. そろそろ文明の拡張を考えてもよい時期です。 To found a second City, you will need to build a Settler. では、開拓者を生産してから、第2の都市を建設しましょう。 A City stops growing while it is building a Settler or Worker. Growth resumes once the Unit is complete. 開拓者や労働者を生産しているあいだは、都市の成長は止まります。ユニットができあがると、都市はまた成長し始めます。 This is because all of the excess Food() that is used for growth is instead used to aid in the production of the Unit . というのも、成長に使われていた余剰分の食料()が、すべてユニット の生産を助けるために消費されるからです。 Select a Settler unit from Rome s build menu. ローマの 生産 メニューから開拓者ユニットを選択してください。 It will take a few turns to construct your Settler. 開拓者ユニットができ上がるまで、数ターンを要します。 第二都市の建設 原文 訳 Your Settler unit is now ready to found a new City. これで開拓者ユニットが新たな都市を建設できるようになりました。 Let me explain how to discern a good location for a City. Any time that a Settler is selected, icons will appear in each of the tiles showing how much Food(), Production(), and Gold() are produced by that Tile . ここで都市建設に適した場所の見つけ方を説明しておきましょう。開拓者を選択すると、それぞれのスクエアにアイコンが現れ、スクエアあたりの食料()、生産力()、ゴールド( )の産出量を示します。 It is best to found a City in locations that have an abundance of Food (), Production (), and Gold ( ). 食料()や生産力()、ゴールド()が豊富な場所が、都市 建設にもっとも適しています。 Blue circles also appear in areas that the game believes are good locations for new cities. Move your Settler unit south to the blue circle to found your City. ブルーの円が現れるところも、このゲームが新しい都市に適していると判断している場所です。開拓者ユニットを南のブルーの円に移動させて、都市を建設しましょう。 Build your second City in this location. 第2の都市をその場所に建設してください。 You have done well thus far, so I am going to stop telling you what to produce out of your Cities. I would recommend that you continue to increase your army and build more Cities. ここまで順調に進んできたので、今後は都市が何を生産すべきかをアドバイスするのはやめておきましょう。ただ、軍を増強して都市を増やすことを心がけてください。
https://w.atwiki.jp/vocaloidchly/pages/8423.html
作詞:ラマーズP 作曲:ラマーズP 編曲:ラマーズP 歌:初音ミク 翻譯:弓野篤禎 校對:decaribbon、Dororo 塞滿了究極偏見的結果 因為隱隱覺得是不是被感覺到了的威脅概念而總是在戰鬥著的UP主的投稿影片見 → user/2523470 ——投稿者評論 歡迎來到教程! 在最初的鎮子上會有嚮導 看準了新手邀請他加入遊行 所謂無償的愛一類愉快地響起 護送一般的話語向未來架起橋梁 這是個利己主義者群集的熱鬧的世界呀 一無所知就闖入其中可真是可怕 您到底是哪位呀 我們還是有點害羞啦 拜託來點手下留情的菜品吧 來嘛先冷靜一下 來一杯喜歡的印度奶茶 用神乎其神的戲法變得無窮大 讓人看見弱點就完了 小心點走 冒險者 世界的入口是要層層篩選的地獄啊 克服之後便是樂園了 終究都是機緣 運氣也要碰碰 為了尋找夥伴而闖入遊行 打著盹的人也好聚集的人也好 一切都很自由的治安在蠢動著呀 失敗到底是什麼東西呀 我們還是有點害羞啦 陰謀論之類我可不屈服啊 倏地一下出現 驚天動地也襲來 關係不和視而不見可是大問題 各種各樣的種族在喊叫 被富有魅力的文化深深吸引 建成的鎮子如今也聲名遠揚 那也是一種人生啊 這是個利己主義者群集的熱鬧的世界呀 融入其中的這顆心 今晚也要引導著 問問題再告訴 爽爽快快地交談呀 您到底是哪位呀 我們還是有點害羞啦 拜託來點手下留情的菜品吧 來嘛先冷靜一下 來一杯喜歡的印度奶茶 用神乎其神的戲法變得無窮大 讓人看見弱點就完了 小心點走 冒險者 世界的入口是要層層篩選的地獄啊 克服之後便是樂園了
https://w.atwiki.jp/browser3594-wiki/pages/53.html
チュートリアル に戻る クエスト名 内容 報酬 備考
https://w.atwiki.jp/pspprogram/pages/66.html
BeginObjectSample XボタンによりカリングのON/OFFを切り替えます。 http //www.youtube.com/watch?v=nmdEASEDNgM Lines Sample http //www.youtube.com/watch?v=YdqqB_OYbUg Render-to-Texture http //www.youtube.com/watch?v=2uBkQUAn2qA
https://w.atwiki.jp/browser3594-wiki/pages/54.html
チュートリアル に戻る クエスト名 内容 報酬 備考