Karlsss 0 Опубликовано 7 апреля, 2018 Здравствуйте, Уважаемые читатели данного портала. Я столкнулся с такой проблемой: Создал NPC бота, дал ему 3dtext, он ходит по своему маршруту, все хорошо, текст над ним есть, но есть проблема. Бот не говорит сообщения которые должен говорить. То есть, если Вы приближаетесь к боту должно рандомно сработать какая-та фраза, но такого не выходит, смотрите код в npcmodes: #define RECORDING "9" //ковычки оставляем #define RECORDING_TYPE 2// Заменяем на любое другое число если запись #define RECORDING_REPLAY 1// Повтор записи, 1 - да, 0 - нет #include <a_npc> main() { } new antiflood = 0; #if RECORDING_REPLAY == 1 public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING); #endif #if RECORDING_TYPE == 1 public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING); public OnNPCExitVehicle() StopRecordingPlayback(); #else public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING); #endif forward Bot(); new bool:paused;//пауза forward Bot1(); public Bot1() { antiflood--; return 1; } public Bot() { for(new i; i < 100; i++) { if(IsPlayerConnected(i)) { new Float:x,Float:y,Float:z; GetMyPos(x, y, z); if(IsPlayerInRangeOfPoint(i, 2.0, x, y, z)) { if(antiflood>=5) return 1; antiflood=20; PauseRecordingPlayback(); new asd = random(5); if(asd==0) { SendChat("чо? а?"); } if(asd==1) { SendCommand("/do Семечки в кармане"); } if(asd==2) { SendCommand("/do Фингал под глазом"); } if(asd==3) { SendChat("Чо уставился? М? С какого района?"); } if(asd==4) { SendChat("пщел отсюду!"); } if(asd==5) { SendChat("пошел!"); } paused=true; } else if(paused) { if(!IsPlayerInRangeOfPoint(i, 10.0, x, y, z)) { ResumeRecordingPlayback(); SendChat("Вот и вали отсюда!"); paused=false; } } } } return 1; } По идеи он должен писать в чат рандомно фразы, когда подходишь к нему, но такого нет. Прошу помощи. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
noname_idk 150 Опубликовано 7 апреля, 2018 (изменено) @Karlsss, со стороны игрового мода невозможно отправлять сообщения от имени сервера? Я сторонник того, чтобы эту систему реализовать не в npcmodes, а в основном моде. Вот так: new npc_msg_timer[MAX_PLAYERS]; public OnPlayerSpawn(playerid) { npc_msg_timer[playerid] = SetTimerEx("@OnPlayerCheckNearTheBot", 1000, true, "i", playerid); } public OnPlayerDisconnect(playerid, reason) { KillTimer(npc_msg_timer[playerid]); } @OnPlayerCheckNearTheBot(playerid); @OnPlayerCheckNearTheBot(playerid) { if(GetPlayerState != PLAYER_STATE_ONFOOT) return 1; // если игрок не пешком, то пропускаем работу функции static Float:distance, Float:x, Float:y, Float:z, bool:pause = false, antiflood; GetPlayerPos(playerid, x, y, z); foreach(new i: Bot) { distance = GetPlayerDistanceFromPoint(i, x, y, z); if(distance >= 10.0 && pause == true) { ResumeRecordingPlayback(); SendChat("Ну и вали отсюда"); pause = false; return 1; } else if(distance <= 2.0) { if(--antiflood) >= 5 return 1; antiflood = 20; switch(random(6)) { case 0: SendChat("чо? а?"); case 1: SendCommand("/do Семечки в кармане"); case 2: SendCommand("/do Фингал под глазом"); case 3: SendChat("Чо уставился? М? С какого района?"); case 4: SendChat("пщел отсюду!"); case 5: SendChat("пошел!"); } pause = true; return 1; } } return 0; } К сожалению, с ботами не работал, потому не знаю точно, реально ли это сделать именно через основной мод. Постараюсь поискать информацию насчет ботов в ближайшее время. Изменено 7 апреля, 2018 пользователем Elrmrnt-Kritik 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты