new MyFirstBot = FCNPC_Create("MyBOT");
Здесь мы создали бота с именем "MyBOT", и привязали его к нашей переменной "MyFirstBot". Но мы только создали бота, теперь нам нужно его заспавнить.
FCNPC_Spawn(MyFirstBot, 307, 1326.23, 458.394, 15.36);
И вот, бот заспавнен. Давайте разберем функцию FCNPC_Spawn. MyFirstBot - ID заспавненого бота, 307 - скин, в котором будет появляться бот, 1326.23, 458.394, 15.36 - координаты спавна, по X, Y и Z.
Отлично. У нас есть заспавненый бот. Но он еще ничего не делает, просто стоит. Давайте его чему-нибудь научим. Для этого используем кэлбэк FCNPC_OnSpawn, он вызывается, как вы догадались, когда спавнится наш NPC:
FCNPC_OnSpawn(npcid)
{
FCNPC_GoTo(MyFirstBot, 2732.13, 123.42, 32.12, MOVE_TYPE_RUN, 10.0, 0);
}
Теперь наш бот пойдет в точку с координатами, которые я взял из головы. Давайте разберем функцию FCNPC_GoTo: MyFirstBot - как вы догадались, ID бота, 2732.13, 123.42, 32.12 - координаты, куда пойдет наш бот, по X, Y, Z, MOVE_TYPE_RUN - тип передвижения, у нас он бег. Есть еще 3 типа - MOVE_TYPE_WALK - шаг, MOVE_TYPE_SPRINT - спринт, MOVE_TYPE_DRIVE - вождение, возможно, только если наш NPC находится за рулем автомобиля. Следующий параметр - скорость передвижения, у нас она 10.0, и последний параметр - использовать ли ZMap. Поясню: ZMap - это дополнение к плагину. Без него игрок будет проходить сквозь объекты, что не очень удобно, но ZMap потребляет слишком много памяти, из-за чего будут лаги, поэтому лучше его не использовать.
И вот, у нас есть бот который идет не пойми куда. Давайте его убьем. Но для этого, нужно сначала дать ему жизни - вставьте FCNPC_SetHealth(MyFitstBot, [колиество HP]); в кэлбэк спавна. Теперь у бота есть определенное количество жизни, но мы не прописали ему получение дамага. Для этого используем кэлбэк FCNPC_OnTakeDamage, он имеет 3 параметра - ID NPC, ID того, кто наносит дамаг и ID оружия, из которого наносят дамаг. Используем последний параметр для определения урона из каждого оружия. Для этого используем оператор switch:
FCNPC_OnTakeDamage(npcid, damagerid, weaponid)
{
switch(weaponid)
{
case 0: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 3);
case 1: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 5);
case 2: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 7);
case 3: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 6);
case 4: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 8);
case 5: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 10);
case 6: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 10);
case 7: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 9);
case 8: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 15);
case 14: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 0.5);
case 15: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 5);
case 16: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 70);
case 18: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 5);
case 22: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 11);
case 23: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 11);
case 24: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 45);
case 25: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 50);
case 26: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 50);
case 27: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 65);
case 28: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 10);
case 29: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 15);
case 30: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 27);
case 31: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 23);
case 32: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 15);
case 33: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 55);
case 34: FCNPC_SetHealth(npcid, FCNPC_GetHealth(npcid) - 70);
}
if(FCNPC_GetHealth(npcid) < 1) FCNPC_Kill(npcid);
return 1;
}
Так же прошу обратить внимание на строку if(FCNPC_GetHealth(npcid) < 1) FCNPC_Kill(npcid);. Здесь у нас стоит проверка, что если HP бота < 1, то он умирает. Иначе HP нашего бота попусту уйдет в минус, но сам бот не умрет.
Все. Теперь у нас есть бот, умеет ходить, и которого мы можем убить. Ждите новый уроков.
Автор - SparrowCrew
Вход
Регистрация
Помощь














