忍者ブログ
Kossyの生活・仕事・ゲームのブログです^p^ 音ゲーは楽しい
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


### お知らせ ###
2013年4月17日のアップデートにより、
当ブログの手順ではCS:Sサーバーが構築できなくなりました。


CS:Sサーバーの立て方 第四回はBOT改造編です。
BOTを自分の好きな名前に、そして強さも変更します。


--> 基本編はコチラ
--> EventScripts導入編はコチラ
--> カスタムMAP導入編はコチラ
--> BOTモデル(カスタムスキン)導入編はコチラ

この手順は色々なサイトから集めたものですので、解説が間違っている場合があります。
もし間違いを発見された方はコメント欄にてご指摘下さい。

一部制限事項があります。
bot.cfgファイルの以下の記述で、値を0にしないとBOTを指定して出現させることができません。
bot_join_after_player 0   //プレイヤーが入った後にBOTが入る=1 joinの前に入る=0

おそらくどこかの設定を弄れば良いのですが、どこを弄ればいいのか分からず・・・orz
やり方をご存知の方はKossyまでご連絡お願いしますm(_ _)m

それと、、、なんか無駄に手順が長くなってしまった感があります。
かえって分かり辛くなってしまったような・・・?w


【前提条件】
Dedicated Serverを用いてCS:Sサーバーを立てることに成功していること。(
基本編参照)
本手順書では、Dドライブにsrcdsフォルダがある想定で書いています。(D:\srcds)

【事前準備】
・テキストエディタを用意する。(メモ帳で十分って人は不要)

サクラエディタがお勧め。
※「パッケージダウンロード」項目内にある最新版をダウンロード&インストールして下さい。


拍手[5回]



【BOT編集手順】
①botprofile.dbのバックアップ
D:\srcds\css\cstrike」フォルダにある“botprofile.db”を右クリックし、
コピーを選択します。
次に、同じフォルダ内で右クリックし、貼り付けして下さい。

「コピー ~ botprofile.db」という名前のファイルが作成されたと思います。
これは何かあった時のためのファイルですので削除しないで下さい。

※botprofile.dbは編集に失敗するとサーバーの起動に失敗したりBOTが出てこなかったりします。

②BOTの名前変更箇所
botprofile.db”を右クリックし、「SAKURAで開く」を選択して下さい。
※サクラエディタが無い方は、メモ帖から開いて下さい。

まずは、単純にBOT名の変更方法について解説します。

188行目まで移動すると、以下のような文章が書いてあります。
//----------------------------------------------------------------------------
//
// These are the individual bot profiles, which inherit first from
// Default and then the specified Template(s), in order
//


これより下にBOT名と使用武器選択の記述があります。
初期状態では、194行目は以下の内容となっています。

Elite+Rifle Cliffe
    Skin = 1
    VoicePitch = 95
End


名称を変更するだけなら、Cliffeを別の名前にするだけで終わりです。
しかしそれだけでは味気ないので、次の手順ではBOTの強さや使用する武器なども調整します。

③BOTの名前を変更する
はじめに、書式について簡単に解説します。

Elite+Rifle Cliffe   //EliteはBOTの難易度テンプレート、Rifleは武器テンプレート、Cliffeは名前
    Skin = 1       //BOTのスキン選択。0~4まで。
    VoicePitch = 95  //BOTの声の高さ。数字が高いほど高音。
End

それでは自分でBOT名称を変更してみましょう。
まずは、以下の4行をコピーして下さい。(既存のCliffeという名前は変更せずに新たに追加します。)

Elite+Rifle Cliffe
    Skin = 1
    VoicePitch = 95
End


そして、最終行に貼り付けして下さい。
例として、名前をCliffeから修造に、難易度のテンプレートはEliteからSyuzoに変更します。
※全角文字を扱う場合は、""で括ります。

Syuzo+Rifle "修造"
    Skin = 1
    VoicePitch = 95
End


<例>

syuzo_haritsuke.PNG

名称変更のみでしたら、これでOKです。
BOTの使用武器、強さを変更せずにとりあえず確認したい方は、手順⑥に飛んで下さい。

④BOTの強さ変更
今回は、先ほどBOTの名称を修造に変更した時に難易度テンプレート名をSyuzoとしたので、
新たにSyuzoのテンプレートを作成します。

一番下の行まで移動し、以下の内容をコピー&貼り付けして下さい。
 
Template Syuzo       //テンプレート名:Syuzo
    Skill = 100         //総合的なスキル。AIMの上手さにも繋がる。(MAX100)
    Aggression = 100    //BOTの攻撃性(積極性)。数値が高ければ高いほど攻撃的。(MAX100)
    ReactionTime = 0.2   //BOTが相手を見つけた時の反応時間。(0.2~0.5秒)
    AttackDelay = 2.0    //敵を見てから攻撃するまでの時間。0だと見た瞬間に攻撃してくる。
    Cost = 4          //BOTを作るのに掛かるコスト?CS:Sでは使用されてないっぽい?
    Teamwork = 100     //チームワークレベルの設定。味方BOTだと従順度に関係するっぽい。
    Difficulty = EXPERT   //BOTの難易度(EASY+NORMAL等と書くこともできる。)
    VoicePitch = 85     //BOTの声の高さ。数字が高いほど高音。
End               
//テンプレートSyuzoの終了

上記パラメータの場合、総合的なスキルは100ですが攻撃するまでの遅延が2秒あるので簡単に勝てますね。

<例>
syuzo_haritsuke.PNG

⑤BOTの使用武器変更
35行目に移動して下さい。
「// weapon preference templates」と書いてあります。
そのすぐ下に、武器テンプレートがあります。

Template Rifle
    WeaponPreference = m4a1
    WeaponPreference = ak47
    WeaponPreference = famas
    WeaponPreference = galil
    WeaponPreference = mp5
    WeaponPreference = deagle
End


WeaponPreferenceと書いてある部分で使用武器を指定できます。
上の方が購入する優先順位が高いです。(CT側でお金があれば、M4A1を買うことになります。)
(武器名称はこちらをご参照。)

それでは、武器を以下のように編集してみます。(awpの行を追加)

Template Rifle
    WeaponPreference = awp
    WeaponPreference = m4a1
    WeaponPreference = ak47
    WeaponPreference = famas
    WeaponPreference = galil
    WeaponPreference = mp5
    WeaponPreference = deagle
End


これで、お金があればAWPを買うことになりました。
まあ、買えたところで攻撃遅延時間が2秒なので意味なさそうですが・・・w

ここまで出来たら「名前を付けて保存」で文字コードセットを“UTF-8”に変更し、保存します。
(全角文字を扱う場合は必ずUTF-8です。)


utf-8_hozon

⑥BOTの選出方法について
一応、⑤までの手順でBOTの名称と強さ・武器を変更できたことになりますが、
botprofile.dbの中身はたくさんのBOT名が書かれています。(194行目以降)
Eliteだけを見ても10人くらいいますね。

BOTの出現方法は以下の2通りあります。
(1)スキルテンプレートの「Difficulty =」に書かれている難易度からランダムでBOTが選出される。
(2)名指しで指定する。


1つ目ですが、難易度を指定し、BOTは名指して指定しません。
「Difficulty =EXPERT」となっているBOTはEliteとExpert(122行目)の2つが該当します。
よって、EliteとExpertの両方からランダムで1名選出されることとなり、
先ほど作成した修造が出てくる可能性は低くなります。
※他のEliteとExpert(199行目~291行目)を削除し、修造1人にしてしまう方法もありますが・・・。

2つ目は、名指しするので100%指定したBOTを出現させることができます。

⑦add_bot.cfgの作成
D:\srcds\css\cstrike\cfg」フォルダを開いて下さい。
次に、そのフォルダ内で「add_bot.cfg」というファイル名・拡張子で作成して下さい。

add_bot.cfgを開き、1行目は空白のまま改行して下さい。
2行目から書きます。(UTF-8形式では1行目が稀に読み込まれないことがあるらしい)

bot_add_t NORMAL
bot_add_ct EASY


上記例だと、テロリスト(t)に難易度NORMALのBOTを1名、
カウンターテロリスト(ct)に難易度EASYのBOTを1名入れることになります。
入ってくるBOT名はbotprofile.dbに書かれている対象の難易度BOTがランダムで選出されます。

ただし、表記方法の場合はランダム選出なのでなかなか修造は出てきません。
そこで、名指しで出現させる方法を書きます。

bot_add_t "修造"

こう書くことで、テロリストに修造が入ってきます。
カウンターテロリストに入れるには以下のようにします。

bot_add_ct "修造"

練習として、修造とタイマンしてみましょう。
2行目に「bot_add_ct "修造"」とだけ書きます。


syuzo_ct

そして、add_bot.cfgを保存します。
必ず
名前を付けて保存」で文字コードセットを“UTF-8”に変更してから保存します。

⑧server.cfgの編集
D:\srcds\css\cstrike\cfg」フォルダにあるserver.cfgを開いて下さい。
一番下の行に“exec add_bot.cfg”を追加し、保存して下さい。


exec

※MAPが切り替わるごとにserver.cfgが読み込まれるので、add_bot.cfgもこの時に一緒に読み込まれます。

⑨bot.cfgの編集
D:\srcds\css\cstrike\cfg」にあるbot.cfgを開いて下さい。
以下の通りに変更して下さい。
※コメント行//を冒頭に追加するのと、bot_join_after_player 0にする。

//bot_prefix "[BOT]" //BOTの名前の最初につける名前。kossyなら、[BOT]kossyという表示になる。
//bot_quota 10 //BOTの人数を決める
//bot_difficulty 0 //BOTの強さ。0=easy 1=normal 2=hard 3=expert
//bot_join_team any //BOTのチーム配分。どちらかに入る=any Tに入る=T CTに入る=CT
bot_join_after_player 0 //プレイヤーが入った後にBOTが入る=1 joinの前に入る=0
//bot_quota_mode fill //bot_quotaの数に合わせてBOTの数が増減する。 normalの場合は増減しない(?)

<例>
bot_cfg.PNG

⑩CS:Sサーバーの起動
修造がちゃんとCT側に入っているか、攻撃するまでの遅延が2秒あるかを確認して下さい。


syuzo_ok


手順は以上です。
お疲れ様でした(´・д・`)


PR

Comment
Name
Title
Mail
URL
Comment
Pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
無題
リンク追加の件はOKです。
ご存知かと思いますが今現在は修造鯖を新管理人tamaryoさんに引き継いでいますので元管理人ですな。
ESってちゃんと覚えないと難しいですよね。自分もまだまだ理解できていません。
当ブログからリンクを貼っている管理人さん達の方が何倍も詳しいです^p^
Kossy 2012/02/20(Mon)12:20: 編集
無題
了解しました。ご丁寧に有難うございました。
最近サーバーを建てたばかりなのでESがまだ理解しきれておらず、困っていました・・・
それとこれは宜しければなのですが、修造サーバーさんのこのブログをサーバー構築の参考にさせていただいたので、もしよければ参考文献としてこのブログのリンクをサイトの方に追加させていただいても宜しいでしょうか。一応サイトの方をURLの方に添付させておきました。
定時帰りのFPSer URL 2012/02/20(Mon)12:05: 編集
無題
それで大丈夫です。
あ、userid = ev['userid'] のevをeventに変更してください。
Kossy 2012/02/20(Mon)11:07: 編集
無題
なるほど・・・有り難うございます。
BOTのみを復活させたい場合は
"___if es.isbot(userid):"を追記して、

import es
import gamethread

def player_death(event):
___userid = ev['userid']
___if es.isbot(userid):
____gamethread.delayed(5, Respawnplayer, (userid))

def Respawnplayer(userid):
____es.setplayerprop(userid, "CCSPlayer.m_iPlayerState", 0)
____es.setplayerprop(userid, "CCSPlayer.baseclass.m_lifeState", 512)
____es.spawnplayer(userid)

という感じで大丈夫でしょうか・・・?
定時帰りのFPSer 2012/02/20(Mon)09:10: 編集
無題
↓のコメント欄に回答がありますのでそちらをご覧ください。
http://kossykossy.blog.shinobi.jp/Entry/187/#comment193
Kossy 2012/02/20(Mon)07:04: 編集
無題
修造サーバーのようにBOTが死ぬ度に新たなBOTが追加(リスポーン?)されるEvent Scriptを教えてもらってもよろしいでしょうか・・・いきなり質問して申し訳ありませんがよければ宜しくお願いします。
定時帰りのFPSer 2012/02/19(Sun)23:19: 編集
無題
難易度いじってますよ。
といってもbotprofile.db内の反応速度やAIMなどのデータを弄ったりする程度ですが。
Kossy 2011/10/15(Sat)13:51: 編集
無題

さーせん
KoosyさんってBOTの難易度いじってますか?
kureid URL 2011/10/15(Sat)12:18: 編集
無題
解決しました
文をよく読んでたらできました
ありがとうございます
強力 2011/05/15(Sun)22:53: 編集
無題
>サーバーでプレイしようとすると ~・・・
これはサーバーとクライアントでバージョンが違う場合に出るようです。
クライアントは自動でアップデートされますが、サーバーは手動でアップデートされるため、Valveによるアップデートが発生した場合にサーバー側の対応が行われるまではこのメッセージが出て入れなくなります。

テンプレートの見本については今現在も出来ます。
おそらく書き方が間違っていると思われますのでもう一度手順を見直してみてください。
Kossy 2011/05/15(Sun)08:02: 編集
無題
事故解決しました

つずけて質問なんですが
テンプレートに見本のようにSyuzoと打つと
鯖を起動したときに - invalid tamplate refrence 'Syuzo'とでて
設定した"修造"の名前もでません
やっぱりアップデートとかでつかえなくなったんですか?
強力 2011/05/14(Sat)19:19: 編集
無題
サーバーでプレイしようとすると
サードパーティーMODがインストールされてません

とでるんですが
どうすればいいんでしょうか
いろいろググりましたがわかりません
強力 2011/05/14(Sat)19:03: 編集
無題
度々教えてもらってありがとうございますm(_ _)m

今から試してみようと思います
えんしょー 2011/03/06(Sun)19:55: 編集
無題
俺も同じ道を歩んでいるので大丈夫です^p^
Google先生で調べて先人達のBlogやADDON MANAGERのサイトのスクリプトを参考にすると良いですよ。

bot quota(T、CTの合計人数)をマップスタート時に設定してみてはどうでしょう。
def es_map_start(event_var):
  es.server.queuecmd('bot_quota 人数')
Kossy 2011/03/06(Sun)06:17: 編集
無題
T側が6人を超えたら蹴るようにしたのですが上手く動作しません(´;ω;`)

プログラミング向いてないのかな...
えんしょー 2011/03/05(Sat)23:22: 編集
無題
動作検証してませんが、CT側のBOTが10人超えたら難易度normalのBOTをキックするスクリプトはこんな感じです。
es.getlivingplayercount(2)ならT側が対象になります。

def round_start(event_var):
  if es.getlivingplayercount(3) > 10:
    es.server.queuecmd('bot_kick ct normal')
Kossy 2011/03/05(Sat)21:06: 編集
無題
scriptですか・・・

難しそうですがやってみます
ありがとうございました
えんしょー 2011/03/05(Sat)20:20: 編集
無題
こんばんは。
bot.cfgにbot_quota 10とか記載すれば、
BOTは10人までしか入らないようになりますよ。
もしそれでもダメな場合はESで10人超えたらBOTをキックするとかのスクリプトを書かないとダメだと思います。
Kossy 2011/03/05(Sat)19:05: 編集
無題
こんにちは

この前eventscriptで質問をしたものですが今回は何故かadd_botに書いていないBOTがマップ変わったときに入って、サーバーが満員になってしまいます。

解決策があったら教えてくださいm(_ _)m
えんしょー 2011/03/05(Sat)16:58: 編集
無題
サーバー構築がんばってください^p^
Kossy 2010/11/13(Sat)21:18: 編集
無題
できました!
なんどもお騒がせしてすみません・・・pq
yoshida 2010/11/13(Sat)21:04: 編集
無題
こんにちは。
ここからサクラエディタをDLできませんか?
http://sakura-editor.sourceforge.net/download.html
Kossy 2010/11/13(Sat)14:28: 編集
無題
サクラエディタがサービス終了してしまったようでファイルがDLできません・・・

他に使えそうなテキストエディタはないでしょうか?
yoshida 2010/11/13(Sat)14:01: 編集
無題
自分の場合はserver.cfgのmp_limitteams 0を7にしているので、
TとCTの人数差が7になったところでBOTが入らなくなるので気にしていませんでした^^;
BOTの番号はアップデート後から番号がどんどん増えていくようになったと記憶していますがこちらも気にしていなかったのでよく分かりませんw
サーバー運営は大変ですがみんな最初は分からず同じ道を歩んでいると思うので頑張ってください!
Kossy 2010/10/28(Thu)15:42: 編集
無題
botが上手く入ってくれなくてずっと考え込んでいました。問題はbot_addについて。これ問題なんですね。server.cfgにexec~で書いてしまうとbotを際限なく読み込んでしまう。

結局sever.cfg内で先にbot.cfg(botをkickします)を読み込ませその後の行にadd_bot.cfg(botを読み出します)を書きました。これで問題は解決といきたいところですが、srcdsのコンソール画面を見ていると同じbotでもserverに入るたびに新しいプレイヤー番号を与えられているんですね。<90>とか大きな数字も出てきてびっくりしましたがどうしようもないので放っておくことにしました。

とりあえず当初考えていたものとは程遠いけれど、サーバーの体をなしたと考えてsay_soundを導入してみます。このサイトが無ければここまで来ることはおろか導入すら良く分かりませんでした。本当にありがとうございます。
Endurance 2010/10/28(Thu)10:43: 編集
無題
プロファイルが無いってエラーになっちゃってますね。
botprofile.dbはちゃんとUTF-8で保存していますか?

変更せずにそのままコピペでやってみると上手くいくかもしれません。
Kossy 2010/06/19(Sat)14:14: 編集
無題
上記どおりやっているのですが、エラーが出てしまいます><
ERROR- no profile for '名前' exists.
定時帰りのFPSer 2010/06/19(Sat)08:13: 編集
無題
ありがとうございます!
参考にさせて頂き、上手くいったら内容を更新します。

こういう時にプログラムのセンスが問われる・・・w
Kossy 2010/04/12(Mon)07:39: 編集
無題
すみません、説明が下手なので
これくらいしか書けませんが、
参考にしてみてください。↓

MAPが切り替わったら、毎回変数botaddを0に指定する+BOTを全員KICKします(BOT.CFGにBOT_KICKだけ書いてマップ開始時は一切BOTがいない状態にします。)



if、else文を使ってプレイヤーが接続、もしくはスポーンしたときにBOT_ADD.CFGを読み込ませます。読み込んだら変数を1にしてelse側にいくようにします。(if側は変数botaddが0の時にいくようにします。)



プレイヤがいるという状態を毎ラウンド、可能ならば誰かが切断、したときに確認して変数botaddを0にしてBOTを全てKICKする文も必要です。(プレイヤがいなくなった場合、同マップ中は変数botaddが1のため)


こんな感じのフローで動くのではないでしょうか?
bot_join_after_player 1 を使ったことがないのでなんとも言えませんが。
ゆら URL 2010/04/11(Sun)19:40: 編集
無題
おお、ありがとうございます!
早速試してみたところ、指定した修造がちゃんと出ました^^
しかし、bot_add_ct "修造"としか書いていないのに他のBOTまで出現してきます。
また、MAPが切り替わるごとにBOTが増えていってしまったのでbot_kickなども使いましたがBOTが全く入ってこなくなってしまったりと改善されず。

event player_spawnやevent round_startで出来ますか?
併せてif文などを使って色々とやってみましたが上手くいかずw

俺ってプログラミングセンス無いな~(∵)
Kossy 2010/04/10(Sat)08:11: 編集
無題

bot_join_after_player 1

にすると、マップ開始時に指定したBOTが一瞬JOINするのですが、
プレイヤーがいないのですぐにKICKされてしまうのです。

これはmp_limitteamsによって、プレイヤが入れるチームを制限されるのを防ぐためだと思います。

なので、sourceMODやEventscriptsでプレイヤがJOINしたときに、1回だけBOT.cfgを読ませる制御が必要です。
ゆら URL 2010/04/10(Sat)00:48: 編集
無題
はじめましてこんにちは。
お役に立てたようで何よりです^^
お互いにサーバー運営頑張りましょう!
Kossy 2010/04/09(Fri)13:40: 編集
無題
初めまして、こんにちは ショッパ草です。
自分も鯖作っているのですが(coop)
これが、分からなかったので困ってました。
本当に助かりました!ありがとうございます。
ショッパ草 2010/04/09(Fri)13:01: 編集
[311] [310] [309] [308] [307] [306] [305] [304] [303] [302] [301
«  Back :   HOME   : Next  »
カウンター
カレンダー
02 2024/03 04
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
プロフィール

[Author] Kossy
[Steam_ID] Kossy

定時帰りそこそこ復活<(╹ヮ╹)>

最新コメント
[07/17 Kossy]
[07/17 カサハンラ]
[09/04 Kossy]
[09/03 おちんちん]
[08/04 testes]
[08/03 Kossy]
[08/02 testes]
マシンスペック

【メインPC】
[OS] Windows11 Pro
[CPU] Core i5-10400 @2.9GHz
[MEM] 32GB
[VGA] NVIDIA GTX1660 SUPER
[マウス] Logicool M550L
[PAD] SteelSeries QcK 63004
[キーボード] Logicool K295

【Webサーバー機】
[Model] MINISFORUM N40
[OS] Rocky Linux
[CPU] Celeron N4020 @2.8GHz
[MEM] 4GB
[SSD] 64GB
ブログ内検索
アーカイブ
バーコード
最新トラックバック
忍者ブログ [PR]