alchemistarkの日記

やったことのメモ

SourcePawn

特定のプレイヤーにしか見えないオブジェクトを作るには

//SDKHook SDKHook(g_PropEnt[client], SDKHook_SetTransmit, OnSetTransmit); //SDKHook Prop表示時? public Action:OnSetTransmit(entity, client){ if(entity != g_PropEnt[client]){ return Plugin_Handled; } return Plugin_Continue; } メモ書きSDKHo…

コラム

プラグイン書くにあたってある動作を実現したいとして、コードで書くという方法の他にその機能を持ったEntityを生成するという方法があるので、楽な方を選ぶべきだと思います。僕は書いた方が早い事をEntityでやろうとしたりEntityで済ませばいい事を必死で…

CoreDefenseプラグイン

各チームリスポン前に設置されたCoreブロックを ブロックを設置したり破壊したりして防衛・破壊するゲームモード。実際にプレイしたらどうなるかは知りません pic.twitter.com/1UDq2plFEj— ArcMage (@Alchemist_Ark) 2018年4月21日 リロードで設置モードの切…

Int型、Float型のキャストについて

厳密にはPawnは型を持ってないので、Floatで変数を宣言しても普通にInt値が入る ていうか数値丸め系の関数の戻り値がIntなので元の変数に戻すと型が変わってしまう Format関数とかで%fすると型が違うので思った値が得られない。%dするとちゃんと出る。正確に…

WaitingDeathMatch プラグイン

pic.twitter.com/LC67QfgCmD— ArcMage (@Alchemist_Ark) 2018年4月6日 ここホメて欲しいんだけど、最終CPを基準に周囲にランダムスポーンする仕様なんだけど、溶岩とか即死床の上にはスポーンしないんですよ 他のマップでも大丈夫 pic.twitter.com/N1Dn2hBC3…

デバッグ用リロード関数

愛用のリロード関数を手直ししたので置いておきます 便利。 //デバッグ用 プラグインのリロード public Action:Cmd_reload(client, args){ new String:strName[255]; GetPluginFilename(INVALID_HANDLE, strName, sizeof(strName)); ServerCommand("sm plugi…

TraceRayについて

ついてもクソもないんですけどね 今必死で調べてる 健忘録残すまぁまずはリファレンスから Handle TR_TraceRayEX(const float pos[3], const float vec[3], int flags, RayType rtype) 開始地点posから終了地点またはサーチ方向vecにRayを発射 flagsはサーチ…

特定プレイヤーしか見えないオブジェクトは作れるのか

個人的にこれが無いのはどうなのかと思わなくもない 決闘や強敵アイコン、スポーン時のグローなどエンジン的には可能なはず。 以前どこかでRenderFXを各プレイヤーごとに適用というコードを見た気がするが動くのかそれは VMTでチームごとに見え方変えるとい…

KOTHマップの判定

tf_gameruleからtf_logic_kothやらteam_control_pointなんやら置いたりプロパティ弄ったりアレコレしたけど最終的にマップ名で判定している(koth_から始まるファイル名ならなんでもいい)事が判明した 暴れたい

PLマップの判定

マップロード時に出る画面やmotdでのルール表示でペイロードと表示するにはteam_train_watcherが存在したらPL判定…カートもCPも必要ねぇ…— ArcMage (@Alchemist_Ark) 2018年3月21日まぁEntityのページに書いてあるんですけどね。気付くかこんなもん。team_tr…

Entityについて解説したい 6

ではEntPropについてお話するよInputはEntityに命令するもの、KeyValueはEntityの設定 EntPropはメモリの読み書き*1一番面倒だけど出来ることも多いGetEntProp系は読み出し、SetEntProp系は書き込み EntPropも型ごとに関数がある String、Float、Vector、Ent…

Entityについて解説したい 5

いい加減雑になってきたEntity講座にようこそ1度書いた下書きが消えた 悲しい 今回はKeyValueについてちょっと話しますEntityのページとかで最初の方にあるKeyValueの一覧 あれは何かって話なんですが、HammerでEntityのプロパティ開いたら出るやつです。 …

Entityについて解説したい 4

Outputについて話しましょうか話すとは言ったけどぶっちゃけOutputについて話すことあまりないEntityがゲームの進行や与えられたイベントをトリガーにして別のEntityのInputを叩くのがOutputなわけですが Outputを設定できるのはHammerからMAPを作成する時だ…

Entityについて解説したい 3

InputとOutputについて解説すると言ったなします まずEntityのInputとOutputとは何か、なのですが 単純にEntityに何かを入力する、Entityが何かを出力するという認識でOKです。僕はオブジェクト指向プログラミングというのがよく分かっていない人間なのでこ…

Entityについて解説したい 2

InputとOutputについて解説すると言ったな? あれは嘘だInputとOutputするにはまずInputOutputしたいEntityを見つける必要がありますね InputOutputについてはそれからここでは例として"team_control_point"エンティティを探してみるよ これはキャプチャーポ…

Entityについて解説したい 1

詰まるようなところでは無いのかもしれないが、自分は延々と詰まったので解説したい だがどこからどう解説したものか…「自分はこういう認識をしている」という体で話します。 実際どうであるかとはかけ離れている可能性は大いにあります。 Entityとは、ゲー…

KothIntelプラグイン

KothでCPの代わりにインテルを使うプラグイン。 インテルを拾っている間タイマーが動作します。落とすと止まります。[TF2]KothIntel プラグイン pic.twitter.com/LtNrPKVjn7— ArcMage (@Alchemist_Ark) 2018年1月11日 リスポン前に要塞作った園児がインテル…

kothのタイマー続き

更に遠回りしてた。 対象のEntityが分かったんならそれのInput叩けばいいんじゃないかな!?といわけでkothのタイマーを停止、再開、設定するプラグインできたよ kothマップを改造して何か作ろうとした時に使えると思うよ以下全文。

kothのタイマーを操作する

クソみたいに遠回りした… とりあえず順番に語ります。本題だけ見たい人は最後のコードを見てください。 kothのタイマーを操作したい とりあえず止めたり動かしたり時間を変えたりしたいではkothのタイマーはどこにあるのか? とりあえず思いつくのはtf_logic…

SouceModプラグインの開発を始めるにあたって必要なもの

SourcePawnのWiki作ろうって瞬間だけ思って放置してるやつに書いてたやつ。 準備するもの プラグインのアイディア、プラグインを作成して行いたいこと これが無ければ始まりません。 MetaMod、SourceModが動作する環境 srcdsのインストールにて解説します。(…

PropSpawnプラグイン

クソプラグイン作った 指定したPropを出現させて位置を設定、設置した位置を保存できる ラウンド開始時に自動でロードする機能付き マップをカスタムしたりしてどうぞ以下ソースコード全文

Propの出現と破壊可能にする方法

ゴリゴリ書いてたのでとりあえず全部貼る。 public Action:Cmd_prop(client, args){ new ent = CreateEntityByName("prop_dynamic"); new filter; new String:temp[255]; //フィルター関係/////////////////////////// while ((filter = FindEntityByClassna…

パーティクルについて

完全に詰んだので書いておく。まず基本的にこれ。 kimoto.hatenablog.comこれを使って決闘アイコンを表示したい。 んで表示したパーティクルをKill等で削除したいんだけど消えない。 Entityは消えている。決闘アイコンだけ宙に浮いたままになる。 なお1度も…

TF2 セントリーガンの所有者を確認する

多分これ。 Member: m_hBuilder (offset 2276) (type integer) (bits 21) (Unsigned) 他にも使えそうなのいくつか。実際に中身確認してないから本当にそうか分からないけど、名称から予想。 m_bPlayerControlled:ラングラーで操作中かどうか? m_bBuilding…

TF2 死を回避する方法

無敵化ではなく、ヘルスが0になったけどそのまま戦い続けるようにする方法。引っ掛けるイベントはplayer_hurt player_deathはやっぱりダメだった。よってplayer_deathイベントの情報は持ってこれない… HookEvent("player_hurt", OnPlayerHurt,EventHookMode_…

無いと思ったらあった

EntityのOutputをFireする関数。 開発版(1.9系)じゃないと使えない。github.com /** * Fire a named output on an entity. * * After completion (successful or not), the current global variant is re-initialized. * * @param caller Entity index from…