Просмотр полной версии : [Вопрос] Вопрос про NPC
Здравствуйте. Я записал маршрут для NPC поезда. NPC катается по трем городам и в каждом городе останавливается на 30 секунд. Скрипт в отдельном файле. Подскажите, пожалуйста, как оповестить игроков о прибытии поезда? Нужно с помощью перехватов как-то?
#include <a_npc>
main(){}
new stage;
public OnRecordingPlaybackEnd()
{
if(stage != 2) stage++;
else stage = 0;
SetTimer("Station", 30000, false);
}
public OnNPCEnterVehicle(vehicleid, seatid)
{
SetTimer("Station", 30000, false);
}
forward Station();
public Station()
{
switch(stage)
{
case 0:
{
StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER, "lstosf");
}
case 1:
{
StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER, "sftolv");
}
case 2:
{
StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER, "lvtols");
}
}
return 1;
}
punkochel
07.07.2020, 11:00
Здравствуйте. Я записал маршрут для NPC поезда. NPC катается по трем городам и в каждом городе останавливается на 30 секунд. Скрипт в отдельном файле. Подскажите, пожалуйста, как оповестить игроков о прибытии поезда? Нужно с помощью перехватов как-то?
#include <a_npc>
main(){}
new stage;
public OnRecordingPlaybackEnd()
{
if(stage != 2) stage++;
else stage = 0;
SetTimer("Station", 30000, false);
}
public OnNPCEnterVehicle(vehicleid, seatid)
{
SetTimer("Station", 30000, false);
}
forward Station();
public Station()
{
switch(stage)
{
case 0:
{
StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER, "lstosf");
}
case 1:
{
StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER, "sftolv");
}
case 2:
{
StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER, "lvtols");
}
}
return 1;
}
Я так понимаю функция public OnRecordingPlaybackEnd() вызывается когда поезд останавливается, поэтому алгоритм следующий:
public OnRecordingPlaybackEnd()
{
if(stage != 2) stage++;
else stage = 0;
SetTimer("Station", 30000, false);
foreach(new i:Player) {
if(IsPlayerInRangeOfPoint(playerid, Float:range, Float:x, Float:y, Float:z)) {
SendClientMessage(playerid, color, const message[]);
}
}
}
То есть, мы узнаем координаты где остановился поезд (можно просто создать их статически если остановок определенное количество), далее мы проверяем игроков на нахождение их в этом радиусе, если игрок находится в заданном радиусе - отправляем ему сообщение.
undefined symbol "foreach". Это же отдельный файл.
#include <a_npc>
main(){}
new train_stage;
public OnRecordingPlaybackEnd()
{
train_stage = train_stage != 2 ? train_stage+1 : 0;
SetTimer("Station", 30000, false);
return true;
}
public OnNPCEnterVehicle(vehicleid, seatid)
{
SetTimer("Station", 30000, false);
return true;
}
forward Station();
public Station()
{
new train_city[] = {!"lstosf", !"sftolv", !"lvtols"};
StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER, train_city[train_stage]);
return SendClientMessageToAll(-1, !"Поезд прибыл на станцию!")
}
#include <a_npc>
main(){}
new train_stage;
public OnRecordingPlaybackEnd()
{
train_stage = train_stage != 2 ? train_stage+1 : 0;
SetTimer("Station", 30000, false);
return true;
}
public OnNPCEnterVehicle(vehicleid, seatid)
{
SetTimer("Station", 30000, false);
return true;
}
forward Station();
public Station()
{
new train_city[] = {!"lstosf", !"sftolv", !"lvtols"};
StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER, train_city[train_stage]);
return SendClientMessageToAll(-1, !"Поезд прибыл на станцию!")
}
undefined symbol "SendClientMessageToAll"
SteveStage
12.07.2020, 00:08
undefined symbol "SendClientMessageToAll"
В начале подключи инклуд a_samp:
#include <a_samp>
В начале подключи инклуд a_samp:
#include <a_samp>
Лучше уж тогда подключить конкретную нативку, если только она нужна.
SteveStage
12.07.2020, 02:44
Лучше уж тогда подключить конкретную нативку, если только она нужна.
Компилятор Zeex'а:
native SendClientMessageToAll(color, const message[]);
Стандартный компилятор:
native SendClientMessageToAll(color, message[]);
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot