#チームの機能を作る
1 messages · Page 2 of 1
そんな感じで合ってるんじゃないかな?
そうなのか
プロトコルがhttpじゃないだけで特定のポート指定して繋ぐのは一緒
ユーザーのログインページ作って自分のゲームデータ参照みたいな
あー
チョットコワイ
それ普通にサイトとして作って、dbから取得したものを載せるだけにはならないのかな
dbの実装がそこに出てしまう?ものなのか
-# 意図を理解していないかもしれない
crudのうちrしか許可しないから大丈夫なんじゃないのって思った
DB-API鯖-web みたいな構成ではあるんだけど、API鯖をもし外部に置くとしたらDBが外と通信することになるからその辺がかな
なるほど
(トンネル繋いでれば大した心配事ではないかもだけど
この場合db設定じゃなくてapiの設計を心配するべきじゃないのか...?いやそこまで本格的な物を作ったことがないからわからん!
sqlインジェクションって意味ならdbの設定?ともいえるのか
インジェクションはAPI鯖の実装次第かな
ふむ
多分もし公開するならBDSとの通信に使ってる内部用APIと公開する外部APIで分けるべきよな~
何創ってるんだ、面白そうだな
内部のはdbと通信するためのhttp鯖だけど、保存してる各種IDとかもそれで取れちゃうから公開するのは良くないかも(
RestAPIって単語もあるしhttpで何かやりとりしてたらAPIになるんじゃないかな?
あー、内部とはいえhttpで通信してるからか
外部が物理的に外部なのかプロセス単位で外部なのかにもよるし
um
作りたいものはあっても時間と労力の問題がでかすぎるなぁ
4人くらいに分身したい
だけど結局まあまあ自分で描く
通信部分をアドオンに実際に書いてみたら
とんでもないことになってしまった
またリファクタリング必要そうだなあああああああああああああああああああああ!!!!!!!!!!!
w
わらえないw
こんな感じ
ライブラリ作る場合によさそうだな
export const noArgs = <T extends {new (...args: any[]): {}}>(constructor: T) => {
return class extends constructor {
myProperty = "value";
};
};
引数ない場合の賢いデコレータ定義(らしい)
<T extends {new (...args: any[]): {}}>(constructor: T)
がクラスコンストラクタを指すらしい
newする際(?)に可変長引数を受け取ってオブジェクトを返すー>クラスコンストラクタ
(rest params)
忘れてたけど成功したか否かはとれるんだった
これ大事だ
デコレータ作って使ってみた
いい感じ...?(変わってるか?)
終わんねえ ; ;
作業終わるまで耐久配信!?
@CustomBlockComponent({name: "tr:..."})
export class ... implements BlockCustomComponent {
private _OrbToXp(player: Player, mainhand: ContainerSlot, orb: ItemStack) {
let amount = player.isSneaking ? 10 : 1;
if (amount === 10 && orb.amount < 10) {
amount = 1;
}
if (orb.amount < amount) return;
player.addExperience(OrbToExpRate * amount);
if (orb.amount === amount) {
mainhand.setItem();
} else {
orb.amount -= amount;
mainhand.setItem(orb);
}
Sound.play(player, amount === 10 ? XpTableSounds.converted10 : XpTableSounds.converted);
}
private _XpToOrb(player: Player) {
let amount = player.isSneaking ? 10 : 1;
const {xpEarnedAtCurrentLevel, totalXpNeededForNextLevel} = player;
if (amount === 10 && player.getTotalXp() < OrbToExpRate * 10) {
amount = 1;
}
const totalXpToSubtract = OrbToExpRate * amount;
if (player.getTotalXp() < totalXpToSubtract) return;
const diff = xpEarnedAtCurrentLevel - totalXpToSubtract;
if (diff < 0) {
player.addExperience(-xpEarnedAtCurrentLevel);
player.addLevels(-1);
let newDiff = totalXpNeededForNextLevel + diff;
while (newDiff < 0) {
player.addLevels(-1);
newDiff = player.totalXpNeededForNextLevel + newDiff;
}
player.addExperience(newDiff);
} else {
player.addExperience(-totalXpToSubtract);
}
player
.getComponent(EntityComponentTypes.Inventory)!
.container.addItem(new ItemStack("tr:xp_orb", amount));
Sound.play(player, amount === 10 ? XpTableSounds.converted10 : XpTableSounds.converted);
}
}
今思えば非効率なコードを掲載
まだ作ってる?