alchemistarkの日記

やったことのメモ

今まで作ったプラグインのソースコードをGitHubに置いた

github.com

需要とか知らない
プラグイン自体も置いてあるので導入したい方はご自由にどうぞ。

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

//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;
}

メモ書き

SDKHook_SetTransmitでPlugin_Handledすればいいらしい

コラム

CoreDefenseプラグイン

各チームリスポン前に設置されたCoreブロックを
ブロックを設置したり破壊したりして防衛・破壊するゲームモード。


リロードで設置モードの切り替え、ATTACK2で設置。
マップ設置の各種弾薬箱からブロックを取得 ロッカーやキル時に落ちる箱からは不可
ゲーム開始からCP開放まではロッカーからブロックを一度に1つまで取得可

大人数でゴリゴリブロック置いてCore周りだけじゃなくて戦場にもゴリゴリ置いて欲しい

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

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

正確には「変数が」型を持っているのではなくて、「値が」型を持っているように思える。この場合Intの値が入った時点で、その変数はIntになってしまう。
Floatで宣言してるから%fで値を読み取ろうとしても、中身がIntになってしまっているので読み取るには%dする必要があるということ。


健忘録として。びっくりするからやめて欲しい。

WaitingDeathMatch プラグイン


続きを読む

デバッグ用リロード関数

愛用のリロード関数を手直ししたので置いておきます
便利。

//デバッグ用 プラグインのリロード
public Action:Cmd_reload(client, args){
	
	new String:strName[255];
	
	GetPluginFilename(INVALID_HANDLE, strName, sizeof(strName));
	ServerCommand("sm plugins reload %s", strName);
	GetPluginInfo(INVALID_HANDLE, PlInfo_Name, strName, sizeof(strName));
	ReplyToCommand(client,"reload plugin '%s'", strName);
}