counter

スクリプトについて

============================================================ ◆履歴 ------------------------------------------------------------ 2009/08/31 ver2.13より - 墓地、ライブラリを対象とするGetSkillTargetable()の呼び出しで応答しなくなるバグ修正 - CreatureクラスのFly()などのパラメータ取得関数で  場に出ていないときは基本パラメータを返すように修正 - SelectBlock()時以外にCreature:CanBlock()が正常動作しなかったのを修正 - 「大戦鬼」が場に出ている状態でパラメータUPの効果が他のクリーチャーの  Creature:BattleHP(true),Creature:BattleAtk(true)に影響を与えていたのを修正 - Creature:BattleHP(true),Creature:BattleAtk(true)に「突撃奨励」などの効果を反映 2009/08/09 - ver2.12より BattleXXX()系は戦闘突入した場合の推定パラメータを返すようになりました。  また、引数にbAtkが追加されました、攻撃時とブロック時で効果の異なるランドスペルや能力が適用されます。  限定条件ブロック時などの効果は加算されない場合があります。 - Card型のメンバ関数の記述を追加 int GetCastTime() , int GetRemainCastTime() ver2.12から int GetEffectNum() 2009/03/17 GetTargetable(),GetSkillTargetable()の引数PIDの記述が誤っていたのを修正 ver2.11での変更点 - 2つ目以降のデッキを選んでも1つ目のデッキになるバグ修正 - SelectBlock()でカウンタークリーチャーをreturnしない場合に  ブロックできなかったバグを修正 - コールバック関数に ShuffleLib()とShufflePlayerLib()を追加 - Card型とCreature型にRead onlyメンバ変数  Ex , CID , Lang , ID を追加 - Card型にメンバ関数 GetCastingTarget() , GetSkillCost() を追加 - Creature型にメンバ関数 GetCard() を追加 - Cost型にメンバ関数 GetAttr() を追加 - グローバル変数にCard型を定義するとクラッシュするバグ修正 - Card:Cast()で引数が0個の場合にクラッシュするバグを修正 2009/02/03 未記入だったクラス仕様を追加 ver2.10での変更点 - ExecCPU()の戻り値を正確にする必要がなくなりました。 - ExecCPU()で一度に複数回行動系関数を呼んでも最初の一つが実行されるように修正しました。 ============================================================ スクリプトの種類 ABCDでのスクリプトには2種類あり、スキンとして差し替えができます。 ・タイトルスクリプト タイトル画面の微妙なレイアウト変更や、無駄な機能を追加できます。 [Script]セクションのFile000キーに指定してください ・CPUスクリプト CPUの思考ルーチンやデッキを作れます。 [Script]セクションのFile000キー以降に指定してください。 他のCPUと番号がバッティングしても問題ありません。 スクリプトの基本 スクリプトはLUAです。 その辺の解説ページでも適当に見てください。 空想具現化プログラミングさんのLua SJIS対応版 5.1を利用してます。 そのため、コメントや文字列に日本語が利用可能です。 文字コードはSJISでお願いします。 スクリプトのカレントディレクトリはABCDの解凍パスになります。 スクリプトがおいてあるディレクトリは BASE_PATH グローバル変数に格納されています。 スクリプトディレクトリ以下のファイルを指定する場合は以下のようにしてください。 image_file = BASE_PATH .. "img/image00.png" サンプルではデバッグフラグを設定しつつ、script/abcd.luaを読み込んでいますが必須ではありません。 DEBUG = true ; -- デバッグフラグ dofile("script/abcd.lua") ; タイトルスクリプト グローバル変数として、g_Title , g_posBtn1〜g_posBtn6を定義してください。 それぞれ、タイトル画像とボタン類の位置を設定します。 単体でどうこうよりも、スキン化したタイトル画面のレイアウトなどでの使用を想定しています。 [必要なグローバル変数] -- タイトルについての定義 g_Title = { -- タイトル画像の表示位置を画像の中心で指定します。 center_x = 250 , center_y = 80 , -- タイトル画像のサイズがプログラム側から設定されます。 width = 0 , height = 0 , } ; -- 各ボタンの位置を指定します。 -- ※不要なボタンは (1000,1000) などの異次元に投棄してください。 g_posBtn1 = {x = 375 , y = 100} ; -- Online Duel g_posBtn2 = {x = 400 , y = 180} ; -- Offline Duel g_posBtn3 = {x = 425 , y = 260} ; -- Deck Editor g_posBtn4 = {x = 450 , y = 340} ; -- Card List g_posBtn5 = {x = 460 , y = 420} ; -- Option g_posBtn6 = {x = 470 , y = 500} ; -- Exit Game [必要なコールバック関数] function MouseUp ( btn , x , y) btnには押されたマウスのボタンが渡されます。 0:R , 1:L , 2:M x,yには押された座標が入ります。 CPUスクリプト CPU定義用スクリプトと、デッキAIスクリプトの2種類が必要です。 CPU定義用スクリプト [必要なグローバル変数] -- CPUの定義 -- ※ここでのファイル名は相対パスで検索されます。 CPU_INFO = { -- CPU名 name = "Sample of Moon" , -- デッキAIスクリプト定義 -- nilで無効、最低でもdeck0は定義してください deck0 = "Deck1AI.lua" ; deck1 = nil ; deck2 = nil ; deck3 = nil ; deck4 = nil ; deck5 = nil ; deck6 = nil ; deck7 = nil ; deck8 = nil ; deck9 = nil ; -- CPU顔画像 image = "img/cpu02.png" ; } デッキAIスクリプト [必要なグローバル変数] -- AI情報定義 AI_INFO = { -- デッキ名 name = "Madness of Headless." , -- デッキ解説 -- ※改行コードはCRLFですので、\r\nで指定してください desc = " A long time ago in a galaxy\r\n" .. "far,far away...\r\n" .. " General Rudel of rebel was\r\n" .. "returning to area51 " .. "with two Twisted Planarias." .. "That was\r\n" .. "begining of the first fear of\r\n" .. "Headless curse...\r\n" .. "" , exec_min = 10 , -- ExecCPU()を呼び出す最小間隔 exec_max = 50 , -- ExecCPU()を呼び出す最大間隔 } ; [必要なコールバック関数] function CreateDeck() AIのデッキ生成関数 return CardData型の配列でデッキ デッキの重複チェックは行われないので4枚以上のカードを指定可能です。 function CreatePlayerDeck() プレイヤーのデッキ生成関数 return nil or CardData型の配列 function InitializeGame() 初期化関数 何回連続対戦しても一回しか呼ばれない function FinalizeGame() 終了関数 CPU対戦を終わるときに呼び出されます。 確保したリソースを開放してください。 function CheckReDraw() ReDrawをチェックする関数 return true or false false返しておいて、勝手にReDrawするのも可 function SelectBattleSpell(attack , blocks) バトルスペル選択 attack : Card型で攻撃クリーチャー blocks : Card型配列でブロッククリーチャーども return nil or Card型で詠唱バトルスペル function SelectBlock(attack , destBlock) ブロッククリーチャー選択 attack : Card型で攻撃クリーチャー destBlock : Card型配列でブロッククリーチャーを格納する return nil or Card型でカウンターアタッククリーチャー function ExecCPU(turn , frame) exec_min,exec_maxで指定した間隔で呼び出される関数 turn : 現在のターン数 frame : 現在のフレーム数 return true or false : 行動したか否か ExecCPU()内でなんらかの行動をとったらtrueを返してください。【推奨】 一度に2つ以上の行動をとらないでください。 ※ver2.10より、戻り値の値にtrueを返さなくても動作するようになりました。 ※※ver2.10より、一度の関数呼び出して複数回行動関数を呼び出した場合に2回目以降は失敗するようになりました。 function OpenDeckSelect() デッキ選択画面を開くとき実行される ※CreatePlayerDeck()でデッキを返した場合は呼ばれない function GameOver(win) ゲーム終了時に呼ばれる win : 1=LOSE , 2=WIN , 3=DRAW , other=不正試合(online時は回線切断) function InitCPU(name) CPU初期化 ※対戦ごとに毎回初期化される name : CPU名 function ShuffleLib() / ShufflePlayerLib() CPUデッキのシャッフル操作 return nil : 何もしない return CardData型配列 : ライブラリの上からのカード.指定されなかった部分はシャッフルされます。 ============================================================ リファレンス ------------------------------------------------------------ ※タイトルで有効な関数は限られていますのでご了承ください。 [定数列挙] D3DFMT : テクスチャやサーフェイスのフォーマット指定時の定数 R8G8B8 A8R8G8B8 X8R8G8B8 R5G6B5 X1R5G5B5 A1R5G5B5 A4R4G4B4 R3G3B2 A8 A8R3G3B2 X4R4G4B4 A8P8 P8 L8 A8L8 A4L4 ATTR : 属性値 RED : 炎 BLUE : 水 GREEN : 風 WHITE : 光 BLACK : 闇 NUM : 属性値の数(5) NONE : 無色 MULTI : 多色 CARD_TYPE : カードの種類 CRYSTAL : クリスタル SORCERY : ソーサリー LANDSPELL : ランドスペル SUMMON : 召還呪文というかクリーチャー的な BATTLE : バトルスペル TARGET_TYPE : 対象タイプ NONE : なし HAND : 手札指定(未実装) CASTING : 詠唱場指定 LIBRARY : ライブラリ指定 GRAVE : 墓地指定 FIELD : フィールド指定 PLAYER : プレイヤー指定(未実装) CREATURE : クリーチャー指定 CRYSTAL : クリスタル指定 LANDSPELL : ランドスペル指定 CREATURE_POS : クリーチャー配置場所指定 CRYSTAL_POS : クリーチャー配置場所指定 LANDSPELL_POS : ランスペル配置場所指定 TARGET_MODE : 対象の範囲 NONE : なし MINE : 自分のみ ENEMY : 相手のみ ALL : 両方 例) TARGET_TYPE.CREATURE と TARGET_MODE.MINE で自分のクリーチャー指定 FIELD : フィールド定義 NUM : フィールド数(8個) NONE : なし CRYSTAL : クリスタル CREATURE : クリーチャー LANDSPELL : ランドスペル EX : エキスパンション定義 BT SE UA DD LANG : 言語定義 JP : 日本語 EN : 英語 ID : いろんなとこで使うID PLAYER : 0(※CPU戦では必ずプレイヤーが1Pだよ) CPU : 1 CPU_IMG : CPU顔アイコンのインデックス値 SELECT NON_SELECT PLAYING WIN LOSE DRAW LOG_TYPE : ログのタイプ ERROR CHAT NETWORK SYSTEM DRAW CARD BLOCK_TYPE : 簡易ブロック機能のタイプ ONE : 一体でのブロックを試みる FIRST_ATK : 先手を有効利用して複数ブロックできないか検討する ATTACK_TYPE : 簡易攻撃判定タイプ AUTO : 可能なら絶対攻撃する LAST : 後手でも無駄死にしない程度に攻撃する CAT : 一定以上強くなったら突撃するような感じ USE_TYPE : 簡易詠唱タイプ BASIC_CRYSTAL : 基本クリスタル配置 BASIC_CREATURE : クリーチャー配置 BASIC_LANDSPELL : ランドスペル配置 BASIC_SORCERY : 対象無指定でのソーサリー詠唱 SOUND_EVENT : サウンドイベント用タイプ BGM_PLAY : BGM再生 BGM_PLAY_INT : ID指定でのBGM再生 BGM_STOP : BGM停止 SE_PLAY : SE再生 //====================================================== 【未定義の定数】 //ステータス定義 enum STATUS { STATUS_ACTIVE = 1 , // アクティブ STATUS_BLOCKABLE = 2 , // ブロック可 STATUS_NONACTIVE = 3 , // ノンアクティブ STATUS_SKILLUSE = 4 , // スキル使用中 //戦闘アイコンの判定でのみ使用 STATUS_CANNOTATTACK = 5 , // 攻撃不可 //戦闘アイコンの判定用 STATUS_NONE , // 無効 } ; enum STATUS_ATK { STATUS_FIRST_ATTACK = 0 , //先制攻撃 STATUS_NORMAL_ATTACK = 1 , //通常攻撃 STATUS_LAST_ATTACK = 2 , //後手攻撃 } ; //====================================================== [クラス] Cost : コスト表現 メンバ関数 int GetColor() ATTRの各色、無色 or 多色の値を返す bool IsColor(int color) color : ATTRのRED〜BLACK その色かどうかを返す bool IsNonColor() 無色かどうかを判定する bool IsSubColor(int color) color : ATTRのRED〜BLACK 指定したサブカラー属性を持つか判定する。 ※土偶やクリスタル系が生み出す色のサブカラー属性を持つ。 int GetAttr(color) color : ATTR.RED〜ATTR.BLACK 属性値を取得する色 属性値の数を数値で取得する メンバ変数 MP : [read only]消費MP CastTime : [read only]詠唱時間 Target : 対象タイプ情報 メンバ変数 Type : [read only]対象タイプ.TARGET_TYPEの値 Num : [read only]対象個数 Mode : [read only]対象指定モード.TARGET_MODEの値 Pos : 座標情報 コンストラクタ Pos() PID=0 , Pos=0 で初期化 Pos(int pid , int pos) PID=pid , Pos=pos で初期化 メンバ変数 PID : [read write]プレイヤーID Pos : [read write]フィールド番号 0〜8 CardData : カード定義クラス コンストラクタ CardData() CardData(ex , cid) CardData(ex , cid , lang) CardData(text) : textでカード指定(例 "SE_001J") オペレータ CardData * (num) 掛け算じゃなくて、枚数評価します。 デッキリスト返すときにしか活躍しません。 メンバ変数 Ex : [read only]エキスパンションID CID : [read only]カードID Lang : LANG で言語 メンバ関数 void Set(Ex , CID) : カードの種類を設定する string GetName() : カード名を得る string GetText() : カードテキストを得る string GetArtist() : アーティスト名を得る string GetImageFileName() : 画像ファイル名を得る Card : カードインスタンス コンストラクタ Card(int card_id) 指定したカードIDのカードのインスタンスを生成する メンバ変数(read only) Ex : エキスパンションID CID : エキスパンション中のカードID Lang : カードの言語 ID : 現在のゲーム中でのユニークID(同種のカードでも異なる) メンバ関数 bool IsOk() 有効なカードを指しているかどうかを示す bool IsInGame() ゲーム中に存在しているカードかどうかをチェックする Cost GetCost() 詠唱コストを得る string GetText() カードテキストを得る string GetName() カード名を得る string GetArtist() アーティスト名を得る string GetEffectText() 効果テキストを得る string GetAllEffectText() 完全効果テキストを得る string GetSkillName(int nSkill) nSkill : スキル番号 0〜4 スキル名を得る string GetSkillEffectText(int nSkill) nSkill : スキル番号 0〜4 スキル効果テキストを得る int GetOwner() オーナーのプレイヤーIDを得る int GetController() コントローラーのプレイヤーIDを得る int GetRarity() レア度を取得する CARD_TYPE GetCardType() カードの種類を得る int GetNextMP() MP持ち越し量 bool IsBasicCard() 基本カード判定 bool IsInField() 場に出ているか判定する Target GetTarget() Target型で対象の種類を返す int GetSkillNum(int nSkill) nSkill : スキル番号 0〜4 スキルの個数を得る bool IsSkillUsing(int nSkill) nSkill : スキル番号 0〜4 スキル使用中かどうかを得る Target GetSkillTarget(int nSkill) nSkill : スキル番号 0〜4 Target型でスキルの対象の種類を返す bool CanSkillTargetable(int nSkill , Card target) nSkill : スキル番号 0〜4 target : 判定を行うカード 指定したカードを対象として指定できるかチェックする bool CanSkillUse(int PID , int nSkill) PID : プレイヤーID nSkill : スキル番号 0〜4 プレイヤー(PID)がnSkill番目のスキルを使用できるか判定する スキル対象が必要な数だけ存在して、コスト支払いが可能ならtrueを返す bool UseSkill(int PID , int nSkill , argument) PID : プレイヤーID nSkill : スキル番号 0〜4 argument : スキル引数 nilでなし カード指定する場合 Card型 or Card型の配列 場所を指定する場合 Pos型 or Pos型の配列 プレイヤー(PID)がnSkill番目のスキルを使用する bool CanTargetable(Card target) target : 判定する対象 targetを対象として指定できるかチェックする bool CanCast(int PID) PID : プレイヤーID プレイヤー(PID)が詠唱可能か判定する 対象が必要な数だけ出ていて、コスト支払いが可能ならtrue bool Cast(int PID , argument) PID : プレイヤーID argument : UseSkill()の引数argumentと同じ プレイヤー(PID)がこのカードを詠唱する cards GetTargetable(int PID) PID : プレイヤーID(2で両方のプレイヤー(場、手札、ライブラリ、墓地を含む)を検索) プレイヤー(PID)の場の対象指定可能な要素の配列を返す nil : 対象なし Card型の配列 : 対象となるカード配列 cards GetSkillTargetable(int PID , int nSkill) PID : プレイヤーID(2で両方のプレイヤー(場、手札、ライブラリ、墓地を含む)を検索) nSkill : スキル番号 0〜4 プレイヤー(PID)の場の対象指定可能な要素の配列を返す nil : 対象なし Card型の配列 : 対象となるカード配列 table GetCastingTarget(bool bCard) 詠唱中であれば対象のリストを返す。 bCardがtrueならば、戻り値はCard型のみ falseであれば、戻り値はPos型のみ ※カードの対象タイプに応じて適切なbCardを渡してください Cost GetSkillCost(int nSkill) スキルのCost型を得る int GetEffectNum() @since ver2.12 エフェクトの個数を得る int GetCastTime() 詠唱時間を得る int GetRemainCastTime() 残り詠唱時間を得る Creature : クリーチャー関連の操作用クラス コンストラクタ Creature(int card_id) 指定したカードIDのカードからクリーチャークラスを生成する Creature(Card) 指定したカードからクリーチャーを生成する メンバ変数(read only) Ex : エキスパンションID CID : エキスパンション中のカードID Lang : カードの言語 ID : 現在のゲーム中でのユニークID(同種のカードでも異なる) メンバ関数 bool IsOk() 有効な値かチェックする int BaseHP() 基本HPを得る int BaseAtk() 基本攻撃力を得る int BaseCreatureType() 基本クリーチャータイプを得る int Status() STATUSで現在のアクティブ状態 int HP() HPを得る int MaxHP() 最大HPを得る int Atk() 攻撃力を得る int Barrier() 軽減値を得る int CreatureType() クリーチャータイプを得る int AttackTurn() STATUS_ATK で攻撃順序 int Protection(int color) color : ATTR.RED〜BLACK 指定した色の耐性を得る bool Fly() 飛行を持つならtrue bool Wall() 壁属性を持つならtrue bool Regenerate() 再生を持つならtrue bool Revival() 復活を持つならtrue bool FlyBlock() 飛行防御を持つならtrue bool Trample() 貫通を持つならtrue bool Legendary() 伝説属性を持つならtrue int BattleHP(bool bAtk=false) 戦闘になった場合のHPを得る ※ver2.12より BattleXXX()系は戦闘突入した場合の推定パラメータを返すようになりました。  また、引数にbAtkが追加されました、攻撃時とブロック時で効果の異なるランドスペルや能力が適用されます。 ※限定条件ブロック時などの効果は加算されない場合があります。 int BattleAtk(bool bAtk=false) 戦闘になった場合の攻撃力を得る int BattleAttackTurn(bool bAtk=false) 戦闘になった場合の攻撃順序を得る(STATUS_ATK) bool BattleFly(bool bAtk=false) 戦闘になった場合の飛行状態を得る bool BattleRegenerate(bool bAtk=false) 戦闘になった場合の再生状態を得る bool BattleTrample(bool bAtk=false) 戦闘になった場合の貫通状態を得る int BattleProtection(int color , bool bAtk=false) color : ATTR.RED〜BLACK 戦闘になった場合の指定した色の耐性を得る int BattleBarrier(bool bAtk=false) 戦闘になった場合の軽減値を得る BattleCreatureType(bool bAtk=false) 戦闘になった場合のクリーチャータイプを得る bool CanAttack(bool is_counter) is_counter : trueならカウンター攻撃としてチェックする 攻撃可能かどうかを得る bool CanBlock(Creature attacker) attacker : 攻撃してくるクリーチャー attackerの攻撃をブロックできるかチェックする Card GetCard() クリーチャー型からカード型を得る Player : プレイヤークラス コンストラクタ Player(int PID) PID : プレイヤーID(0 or 1) プレイヤーIDを指定してインスタンスを生成する メンバ変数 PID : [read only]プレイヤーID メンバ関数 string GetName() プレイヤー名を得る int GetHP() HPを得る int GetMP() MPを得る int GetMaxMP() 最大MPを得る int GetBarrier() 軽減値を得る int GetBattleBarrier() 【戦闘中】軽減値を得る int GetAttr(int color) color : ATTR.RED〜BLACK 指定した色の属性値を得る int GetMaxAttr(int color) color : ATTR.RED〜BLACK 指定した色の最大属性値を得る int GetAddCrystalNum() クリスタル配置可能数を得る int GetMaxAddCrystalNum() 最大クリスタル配置可能数を得る int GetExDraw() ドローストックの数を得る bool CanAddCrystal() クリスタル配置可能かチェックする bool CanReDraw() リドロー可能かチェックする bool CanExDraw() ドローストック使用可能かチェックする int GetCastingNum() 詠唱中カードの数 int GetHandNum() 手札の数 int GetLibraryNum() ライブラリの枚数 int GetGraveNum() 墓地の枚数 void SetName(string name) name : 設定する名前 プレイヤー名を設定する void SetHP(int hp) HPを設定する void SetMP(int mp) MPを設定する void SetMaxMP(int mp) 最大MPを設定する void SetBarrier(int n) 軽減値を設定する void SetBattleBarrier(int n) 【戦闘中】軽減値を設定する void SetAttr(int color , int n) 属性値を設定する void SetMaxAttr(int color , int n) 最大属性値を設定する void SetAddCrystalNum(int n) クリスタル配置可能数を設定する void SetMaxAddCrystal(int n) 最大クリスタル配置可能数を設定する void SetExDraw(int n) ドローストックの数を設定する // GetCard int GetHand(table dest) dest : カード一覧を格納するテーブル return : 取得個数を返す destテーブルに手札のカード一覧(Card型)を格納する int GetCasting(table dest) dest : カード一覧を格納するテーブル return : 取得個数を返す destテーブルに詠唱中のカード一覧(Card型)を格納する int GetLibrary(table dest) dest : カード一覧を格納するテーブル return : 取得個数を返す destテーブルにライブラリのカード一覧(Card型)を格納する int GetGrave(table dest) dest : カード一覧を格納するテーブル return : 取得個数を返す destテーブルに墓地のカード一覧(Card型)を格納する int GetCrystal(table dest) dest : カード一覧を格納するテーブル return : 取得個数を返す destテーブルに場のクリスタル一覧(Card型)を格納する int GetCreature(table dest) dest : カード一覧を格納するテーブル return : 取得個数を返す destテーブルに場のクリーチャー一覧(Card型)を格納する int GetLandSpell(table dest) dest : カード一覧を格納するテーブル return : 取得個数を返す destテーブルに場のランドスペル一覧(Card型)を格納する int GetFieldCard(table dest) dest : カード一覧を格納するテーブル return : 取得個数を返す destテーブルに場に出ているカード一覧(Card型)を格納する // Field Card GetCard(int zone , int pos) zone : FIELD.CREATURTE , CRYSTAL , LANDSPELL のどれか pos : 0 〜 FIELD.NUM-1 で場所 自分の場のzoneエリアのpos番地に配置されているカードを得る カードがない場合は無効なCard型を返す int SearchCardPos(int zone , Card check_card) zone : FIELD.CREATURTE , CRYSTAL , LANDSPELL のどれか check_card : チェックするカード check_cardがおいてある場所を探す。見つからなければ-1を返す int SearchFreePos(int zone , bool bCastingCheck , int index) zone : FIELD.CREATURTE , CRYSTAL , LANDSPELL のどれか bCastingCheck : trueなら詠唱中のカードの対象を検索から外す index : 0〜.index番目に見つかった位置を返す 空き場所を探す.見つからなければ-1を返す int CPUSearchFreePos(int zone , bool bCastingCheck , int index) CPU的に空き場所を探す。 SearchFreePos()は場に何も存在しない場合に0を返すが CPUSearchFreePos()はランダムな検索順序で返す。 試合中は検索順序は固定される。 void ReDraw() リドローする void ExDraw() ドローストックを使用する [関数] GetCpuPath return スクリプトファイルのパス bool LoadSprite(file) スプライトを読み込む file : ファイル名 bool LoadSprite2(file , a , r , g , b , mipmap , format) 詳細を指定してスプライトを読み込む file : ファイル名 a,r,g,b : カラーキー mipmap : MipMapレベル(1とかでおk) format : D3DFMTでフォーマット bool UnloadSprite(file) 読み込んだスプライトを破棄する file : ファイル名 bool LoadSurface(file) サーフェイスを読み込む file : ファイル名 bool LoadSurface2(file , a , r , g , b , mipmap , format) サーフェイスを読み込む file : ファイル名 a,r,g,b : カラーキー mipmap : MipMapレベル(1とかでおk) format : D3DFMTでフォーマット bool UnloadSurface(file) 読み込んだサーフェイスを破棄する file : ファイル名 void AddSpriteMsg(file , message , frame) スプライト表示つきメッセージウィンドウを出す file : 読み込み済みスプライトファイル名 message : メッセージ文字列 frame : 表示時間 void AddSurfaceMsg(file , message , frame) サーフェイス表示つきメッセージウィンドウを出す file : 読み込み済みサーフェイスファイル名 message : メッセージ文字列 frame : 表示時間 bool PlayBgm(file) BGMを再生する file : BGMファイル名 bool PlayBgmID(id) ID指定でBGMを再生する id : BGMのID , default_skin.ini の BGMセクションを参照してください bool StopBgm() BGMを停止する bool LoadSe(file , max) SEとしてサウンドファイルを読み込む file : サウンドファイル名 max : 最大同時再生数(あんまり無駄に大きな数値を入れないこと) bool PlaySe(file) SEを再生する file : 再生するサウンドファイル名 void KickPlay(type , file , wait) サウンド処理イベントをキックする type : SOUND_EVENT で処理タイプ file : 再生するサウンド名 wait : 再生までの待ち時間 void KickPlayID(type , id , wait) サウンド処理イベントをキックする だけど、BGM_PLAY_INTイベントのときしか使わないね type : SOUND_EVENT で処理タイプ id : BGMのID wait : 再生までの待ち時間 void DebugPrint(text) デバッグコンソールに文字列を出力する text : 出力する文字列 void AddLog(type , text) ログウィンドウにログを出力する type : LOG_TYPE でログタイプ text : 出力する文字列 void ExecCmd(pid , text) チャット入力に文字列を入れるのとほぼ同意 pid : プレイヤーID(ID.PLAYER or ID.CPU) text : 文字列 例) ID.PLAYER , "/giveup" でプレイヤーに負けさせる void PopupString(x,y,show_time,text) ポップアップウィンドウを表示する x,y : 表示座標 show_time : 表示時間 , -1で永続的に text : 表示テキスト void CpuSay(type , text) CPUの台詞を表示する type : CPU_IMG でCPUの顔画像タイプ text : 表示文字列 void RegistVipCard(Card) 指定したカードをVIPカードとして登録する void RegistBlock(int type , table arg) type : BLOCK_TYPEで登録するブロックタイプ arg : タイプごとの引数 BLOCK_ONE : 一匹でのブロック arg[1] : safeHp : 安全認識HP.この値よりHPが少ないときは自分が死ぬときでもブロックします. arg[2] : bDeadOk : trueなら相打ちOK FirstBlock : 先手持ちクリーチャーでのブロック 引数なし : nilなどでお願いします void RegistAttack(Card card , int type , int value , table arg) card : 登録するカード type : ATTACK_TYPEで登録する攻撃タイプ value : 評価値 arg : タイプごとの引数 AUTO : 可能なら絶対攻撃する 引数なし : nil LAST : 後手でも無駄死にしない程度に攻撃する 引数なし : nil CAT : 一定以上強くなったら突撃するような感じ arg[1] : int atk : 一定以上判定する攻撃力 arg[2] : bool bDeadOk : 相打ちOK判定 arg[3] : Card : VIPカード.このカードが詠唱中の場合は攻撃をしない.「猫期」が終わってから突撃する用 void RegistCardUse(Card card , int type , int value , table arg) 指定したカードを使う card : 使うカード type : USE_TYPEで利用判定タイプ value : 利用可能な場合の評価値. 利用可能カード群から評価値の一番高いものを使う. ただし、登録されたVIPカード手札に使える状態である場合は VIPカード使用のために待機する arg : タイプごとの引数 BASIC_CRYSTAL : 基本クリスタル配置 引数なし : nil BASIC_CREATURE : クリーチャー配置 引数なし : nil BASIC_LANDSPELL : ランドスペル配置 引数なし : nil BASIC_SORCERY : 対象無指定でのソーサリー詠唱 引数なし : nil ※RegistBlock() , RegistAttack() , RegistCardUse()で登録した行動は  ExecCPU()がfalseを返して、さらに行動していない場合に処理されます。 デバッグの仕方(?) : 開発中にやってたことメモ デバッグコンソールを出す config.ini の[Config]セクションの DebugConsole を 1にしてください DebugPrint()でログを表示できます。 DebugOutLog を 1にすると ABCDX.log に内容を出力します エラー内容もデバッグコンソールに出力されます. 下記構文チェックして最低限typoしてないのを確認するのをお勧めします。 構文チェック 空想具現化プログラミングさんのところからLua5.1.3(lua.org版) を落として 中にある LuaC.exe でコンパイルして見る。 構文エラーがあれば、コンパイルできないので察知できる。 ※ver2.09より、コンパイルエラー類もログウィンドウに出力するように修正しました。
ABCDサイト内検索