shape1
shape2
shape3
shape4
shape7
shape8

Создание NPC (бота)


Gleen

Освоившийся
Пользователь
27.12.2014
393
30
0
28
Отличная система Neat! Благодарю за полезную информацию, на будущее сохраню!  :263A:  

 

Vlad_Trifonov

Гуру
Пользователь
13.03.2015
1 465
5
331
0
У меня мод Green Tech, куда нужно вставлять строку "    if(IsPlayerNPC(playerid)) return 1;". Вот код :

Код:
CALLBACK: OnPlayerRequestClass(playerid, classid)
{
	new musicc[50];//музыка при спавне
	new RandomR = random(sizeof(RandomRadio));
	format(musicc,sizeof(musicc),"%s",RandomRadio[RandomR]);
	PlayAudioStreamForPlayer(playerid,musicc);
	SetPlayerInterior(playerid, 0);
	SetPlayerPos(playerid, 2679.1013, -2535.1406, 21.8786);
	SetPlayerFacingAngle(playerid, 90.0);
	SetPlayerCameraPos(playerid, 2676.5026, -2534.2717, 21.7785);
	SetPlayerCameraLookAt(playerid, 2685.1298, -2539.2526, 22.6501);
	if (RegistrationStep[playerid] == 0 && gPlayerLogged[playerid] != 1)
	{
		if(gPlayerAccount[playerid] != 0)
		{
			new loginmsg[512+1];
			new loginname[MAX_PLAYER_NAME];
			GetPlayerName(playerid,loginname,MAX_PLAYER_NAME);
			format(loginmsg,512,"{FFFFFF}Здравствуйте {33AA33}%s\
			\n{33AA33}Аккаунт на имя {FF0000}%s {33AA33}уже зарегистрирован!\
			\n{33AA33}Введите пароль от акаунта, для входа на сервер.\
			\n{FFFF00}Приятной Игры",loginname,loginname);
			ShowPlayerDialog(playerid,1,3,"{7FFF00}Авторизация",loginmsg,"Вход","Отмена ");
		}
		else
		{
			new loginmsg[512+1];
			new loginname[MAX_PLAYER_NAME];
			GetPlayerName(playerid,loginname,MAX_PLAYER_NAME);
			format(loginmsg,512,"{FFFFFF}Здравствуйте {33AA33}%s\
			\n{33AA33}Вы зашли на сервер {9ACD32}The Best [RP]\
			\n{33AA33}Чтобы начать играть у нас, Зарегистрируйте свой акаунт\
			\n{FF0000}Спасибо, что выбрали наш Сервер;P.S. Фамилию пишите с заглавной буквы!",loginname);
			ShowPlayerDialog(playerid,2,3,"Регистрация",loginmsg,"Регистр","Отмена");
		}
	}
	PlayerInfo[playerid][pModel] = Peds[classid][0];
	new str[68];
	if (classid == 1)
	{
	}
	else if (classid == 2)
	{
	}
	else
	{
		format(str, sizeof(str), "~y~ѓO—PO ЊO„A‡O‹A¦’!");
		GameTextForPlayer(playerid,str,3500,6);
	}
	SetupPlayerForClassSelection(playerid);
	return true;
}
 

TheSeLToN

Участник
Пользователь
21.09.2014
452
125
0
У меня мод Green Tech, куда нужно вставлять строку "    if(IsPlayerNPC(playerid)) return 1;". Вот код :

CALLBACK: OnPlayerRequestClass(playerid, classid)
{
new musicc[50];//музыка при спавне
new RandomR = random(sizeof(RandomRadio));
format(musicc,sizeof(musicc),"%s",RandomRadio[RandomR]);
PlayAudioStreamForPlayer(playerid,musicc);
SetPlayerInterior(playerid, 0);
SetPlayerPos(playerid, 2679.1013, -2535.1406, 21.8786);
SetPlayerFacingAngle(playerid, 90.0);
SetPlayerCameraPos(playerid, 2676.5026, -2534.2717, 21.7785);
SetPlayerCameraLookAt(playerid, 2685.1298, -2539.2526, 22.6501);
if (RegistrationStep[playerid] == 0 && gPlayerLogged[playerid] != 1)
{
if(gPlayerAccount[playerid] != 0)
{
new loginmsg[512+1];
new loginname[MAX_PLAYER_NAME];
GetPlayerName(playerid,loginname,MAX_PLAYER_NAME);
format(loginmsg,512,"{FFFFFF}Здравствуйте {33AA33}%s\
\n{33AA33}Аккаунт на имя {FF0000}%s {33AA33}уже зарегистрирован!\
\n{33AA33}Введите пароль от акаунта, для входа на сервер.\
\n{FFFF00}Приятной Игры",loginname,loginname);
ShowPlayerDialog(playerid,1,3,"{7FFF00}Авторизация",loginmsg,"Вход","Отмена ");
}
else
{
new loginmsg[512+1];
new loginname[MAX_PLAYER_NAME];
GetPlayerName(playerid,loginname,MAX_PLAYER_NAME);
format(loginmsg,512,"{FFFFFF}Здравствуйте {33AA33}%s\
\n{33AA33}Вы зашли на сервер {9ACD32}The Best [RP]\
\n{33AA33}Чтобы начать играть у нас, Зарегистрируйте свой акаунт\
\n{FF0000}Спасибо, что выбрали наш Сервер;P.S. Фамилию пишите с заглавной буквы!",loginname);
ShowPlayerDialog(playerid,2,3,"Регистрация",loginmsg,"Регистр","Отмена");
}
}
PlayerInfo[playerid][pModel] = Peds[classid][0];
new str[68];
if (classid == 1)
{
}
else if (classid == 2)
{
}
else
{
format(str, sizeof(str), "~y~ѓO—PO ЊO„A‡O‹A¦’!");
GameTextForPlayer(playerid,str,3500,6);
}
SetupPlayerForClassSelection(playerid);
return true;
}
Вы чуть-чуть не туда смотрите. Это нужно вставить туда, где происходит сама функция регистрация.

 

TheSeLToN

Участник
Пользователь
21.09.2014
452
125
0
В паблике OnDialogResponse. Пытайтесь искать в начале паблика.

 

Vlad_Trifonov

Гуру
Пользователь
13.03.2015
1 465
5
331
0
В паблике OnDialogResponse. Пытайтесь искать в начале паблика.
у меня уже есть CALLBACK, там так же есть строчка подключения бота к серверу, но бот все равно не попадает в игру, хотя он подключается.

Код:
CALLBACK: OnPlayerRegister(playerid, password[])
{
	if(IsPlayerNPC(playerid))return true;
	if(IsPlayerConnected(playerid))
	{
		new string3[32];
		new playername3[MAX_PLAYER_NAME];
		GetPlayerName(playerid, playername3, sizeof(playername3));
		format(string3, sizeof(string3), "accounts/%s.ini", playername3);
		new File: hFile = fopen(string3, io_write);
		if (hFile)
		{
			strmid(PlayerInfo[playerid][pKey], password, 0, strlen(password), 255);
			new var[32];
			format(var, 32, "Key=%s\n", PlayerInfo[playerid][pKey]);fwrite(hFile, var);
			//PlayerInfo[playerid][pMoney] += PlayerInfo[playerid][pMoney];
			format(var, 32, "pFWarns=%d\n",PlayerInfo[playerid][pFWarns]);fwrite(hFile, var);
			format(var, 32, "RpTest=%d\n",PlayerInfo[playerid][pRpTest]);fwrite(hFile, var);//РП тест
			format(var, 32, "Pin=%d\n",PlayerInfo[playerid][pPin]);fwrite(hFile, var);
			format(var, 32, "AdminPass=%d\n",PlayerInfo[playerid][pAdminPass]);fwrite(hFile, var);
			format(var, 32, "RobbedBank=%d\n",PlayerInfo[playerid][pRobbedBank]);fwrite(hFile, var);//кол-во грабить банк
			format(var, 32, "MedCard=%d\n",PlayerInfo[playerid][pMedCard]);fwrite(hFile, var);
			format(var, 32, "SD=%d\n",PlayerInfo[playerid][pSD]);fwrite(hFile, var);
			format(var, 32, "Garagekey=%d\n",PlayerInfo[playerid][pPgaragekey]);fwrite(hFile, var);
			format(var, 32, "HouseKey=%d\n",PlayerInfo[playerid][pPhousekey]);fwrite(hFile, var);
			format(var, 32, "ArmBil=%d\n",PlayerInfo[playerid][pArmBil]);fwrite(hFile, var);
			format(var, 32, "Level=%d\n",PlayerInfo[playerid][pLevel]);fwrite(hFile, var);
			format(var, 32, "Spawn=%d\n",PlayerInfo[playerid][pSpawn]);fwrite(hFile, var);
			format(var, 32, "Fish=%d\n",PlayerInfo[playerid][pFish]);fwrite(hFile, var);
			format(var, 32, "Fishing=%d\n",PlayerInfo[playerid][pFishing]);fwrite(hFile, var);
			format(var, 32, "AdminLevel=%d\n",PlayerInfo[playerid][pAdministrator]);fwrite(hFile, var);
			format(var, 32, "Brak=%d\n",PlayerInfo[playerid][pBrak]);fwrite(hFile, var);
			format(var, 32, "HelperLevel=%d\n",PlayerInfo[playerid][pModerators]);fwrite(hFile, var);
			format(var, 32, "DonateRank=%d\n",PlayerInfo[playerid][pDonateRank]);fwrite(hFile, var);
			format(var, 32, "Hospit=%d\n",PlayerInfo[playerid][pHospital]);fwrite(hFile, var);
			format(var, 32, "MuteTime=%d\n",PlayerInfo[playerid][pMuteTime]);fwrite(hFile, var);
			format(var, 32, "ConnectedTime=%d\n",PlayerInfo[playerid][pConnectTime]);fwrite(hFile, var);
			format(var, 32, "Registered=%d\n",PlayerInfo[playerid][pReg]);fwrite(hFile, var);
			format(var, 32, "Sex=%d\n",PlayerInfo[playerid][pSex]);fwrite(hFile, var);
			format(var, 32, "Age=%d\n",PlayerInfo[playerid][pAge]);fwrite(hFile, var);
			format(var, 32, "Origin=%d\n",PlayerInfo[playerid][pOrigin]);fwrite(hFile, var);
			format(var, 32, "Respect=%d\n",PlayerInfo[playerid][pExp]);fwrite(hFile, var);
			format(var, 32, "Money=%d\n",PlayerInfo[playerid][pMoney]);fwrite(hFile, var);
			format(var, 32, "Bank=%d\n",PlayerInfo[playerid][pAccount]);fwrite(hFile, var);
			format(var, 32, "Phonebook=%d\n",PlayerInfo[playerid][pPhoneBook]);fwrite(hFile, var);
			format(var, 32, "PhoneMoney=%d\n",PlayerInfo[playerid][pPhoneMoney]);fwrite(hFile, var);
			format(var, 32, "Job=%d\n",PlayerInfo[playerid][pJob]);fwrite(hFile, var);
			format(var, 32, "Paycheck=%d\n",PlayerInfo[playerid][pPayCheck]);fwrite(hFile, var);
			format(var, 32, "HeadValue=%d\n",PlayerInfo[playerid][pHeadValue]);fwrite(hFile, var);
			format(var, 32, "Jailed=%d\n",PlayerInfo[playerid][pJailed]);fwrite(hFile, var);
			format(var, 32, "JailTime=%d\n",PlayerInfo[playerid][pJailTime]);fwrite(hFile, var);
			format(var, 32, "Materials=%d\n",PlayerInfo[playerid][pMats]);fwrite(hFile, var);
			format(var, 32, "Mask=%d\n",PlayerInfo[playerid][pMask]);fwrite(hFile, var);
			format(var, 32, "Matsss=%d\n",PlayerInfo[playerid][pMatsss]);fwrite(hFile, var);
			format(var, 32, "Leader=%d\n",PlayerInfo[playerid][pLeader]);fwrite(hFile, var);
			format(var, 32, "Member=%d\n",PlayerInfo[playerid][pMember]);fwrite(hFile, var);
			format(var, 32, "Rank=%d\n",PlayerInfo[playerid][pRank]);fwrite(hFile, var);
			format(var, 32, "Char=%d\n",PlayerInfo[playerid][pChar]);fwrite(hFile, var);
			format(var, 32, "Int=%d\n",PlayerInfo[playerid][pInt]);fwrite(hFile, var);
			format(var, 32, "Model=%d\n",PlayerInfo[playerid][pModel]);fwrite(hFile, var);
			format(var, 32, "PhoneNr=%d\n",PlayerInfo[playerid][pPnumber]);fwrite(hFile, var);
			format(var, 32, "Clock=%d\n",PlayerInfo[playerid][pClock]);fwrite(hFile, var);//покупка
			format(var, 32, "Kpk=%d\n",PlayerInfo[playerid][pKpk]);fwrite(hFile, var);///kpk покупка
			format(var, 32, "Pasport=%d\n",PlayerInfo[playerid][pPasport]);fwrite(hFile, var);
			if ((PlayerInfo[playerid][pPos_x]==0.0 && PlayerInfo[playerid][pPos_y]==0.0 && PlayerInfo[playerid][pPos_z]==0.0))
			{
				PlayerInfo[playerid][pPos_x] = 1684.9;
				PlayerInfo[playerid][pPos_y] = -2244.5;
				PlayerInfo[playerid][pPos_z] = 13.5;
			}
				if(Spectate[playerid] != 255)
			{
				PlayerInfo[playerid][pPos_x] = Unspec[playerid][sPx];
				PlayerInfo[playerid][pPos_y] = Unspec[playerid][sPy];
				PlayerInfo[playerid][pPos_z] = Unspec[playerid][sPz];
				PlayerInfo[playerid][pInt] = Unspec[playerid][sPint];
				PlayerInfo[playerid][pLocal] = Unspec[playerid][sLocal];
			}
			PlayerInfo[playerid][pStil1] = 0;
			PlayerInfo[playerid][pStil2] = 0;
			PlayerInfo[playerid][pStil3] = 0;
			PlayerInfo[playerid][pSleep] = 30;
			PlayerInfo[playerid][pToilet] = 30;
			PlayerInfo[playerid][pHunger] = 30;
			format(var, 32, "Stil1=%d\n",PlayerInfo[playerid][pStil1]);fwrite(hFile, var);
			format(var, 32, "Stil2=%d\n",PlayerInfo[playerid][pStil2]);fwrite(hFile, var);
			format(var, 32, "Stil3=%d\n",PlayerInfo[playerid][pStil3]);fwrite(hFile, var);
			format(var, 32, "Pos_x=%.1f\n",PlayerInfo[playerid][pPos_x]);fwrite(hFile, var);
			format(var, 32, "Pos_y=%.1f\n",PlayerInfo[playerid][pPos_y]);fwrite(hFile, var);
			format(var, 32, "Pos_z=%.1f\n",PlayerInfo[playerid][pPos_z]);fwrite(hFile, var);
			format(var, 32, "CarLicA=%d\n",PlayerInfo[playerid][pCarLicA]);fwrite(hFile, var);
			format(var, 32, "CarLicB=%d\n",PlayerInfo[playerid][pCarLicB]);fwrite(hFile, var);
			format(var, 32, "CarLicC=%d\n",PlayerInfo[playerid][pCarLicC]);fwrite(hFile, var);
			format(var, 32, "CarLicD=%d\n",PlayerInfo[playerid][pCarLicD]);fwrite(hFile, var);
			format(var, 32, "FlyLic=%d\n",PlayerInfo[playerid][pFlyLic]);fwrite(hFile, var);
			format(var, 32, "BoatLic=%d\n",PlayerInfo[playerid][pBoatLic]);fwrite(hFile, var);
			format(var, 32, "FishLic=%d\n",PlayerInfo[playerid][pFishLic]);fwrite(hFile, var);
			format(var, 32, "GunLic=%d\n",PlayerInfo[playerid][pGunLic]);fwrite(hFile, var);
			format(var, 32, "PayDay=%d\n",PlayerInfo[playerid][pPayDay]);fwrite(hFile, var);
			format(var, 32, "PayDayHad=%d\n",PlayerInfo[playerid][pPayDayHad]);fwrite(hFile, var);
			format(var, 32, "Warnings=%d\n",PlayerInfo[playerid][pWarns]);fwrite(hFile, var);
			format(var, 32, "Tutorial=%d\n",PlayerInfo[playerid][pTut]);fwrite(hFile, var);
			format(var, 32, "Wanted=%d\n",PlayerInfo[playerid][pWanted]);fwrite(hFile, var);
			format(var, 32, "Pasport=%d\n",PlayerInfo[playerid][pPasport]);fwrite(hFile, var);
			format(var, 32, "Tros=%d\n",PlayerInfo[playerid][pTros]);fwrite(hFile, var);//Трос для авто
			format(var, 32, "Sleep=%d\n",PlayerInfo[playerid][pSleep]);fwrite(hFile, var);
			format(var, 32, "Toilet=%d\n",PlayerInfo[playerid][pToilet]);fwrite(hFile, var);
			format(var, 32, "Hunger=%d\n",PlayerInfo[playerid][pHunger]);fwrite(hFile, var);//pRington
			format(var, 32, "Rington=%d\n",PlayerInfo[playerid][pRington]);fwrite(hFile, var);
			fclose(hFile);
			SendClientMessage(playerid, COLOR_YELLOW, "[Сервер]: Аккаунт успешно зарегестрирован!");
		}
	}
	return true;
}
 

EvgMart

Делаю маппинг.
Пользователь
01.03.2015
164
62
0
А если я это всё буду делать через локальную сеть, будет работать? Просто я захожу через локалку, пишу /vrecord Kirill_Petrov, проезжаю маршрут, пишу /srecord. Захожу в scriptfiles - файла с названием бота нет. Так ответьте, через локалку это всё можно сделать?

 

Mirex

Руководитель проекта
Команда портала
Гл.Администратор
Золотой
21.12.2013
2 512
3
550
0
29
definehost.ru
Скриптер
@EvgMart, файл должен быть вне зависимости где записываете, разница только в том, куда сохраняется. То есть, если записываете на хосте - то в папке scriptfiles на хосте.

А так, даже представить не могу почему у вас не создает файл с маршрутом. При вводе команды в /vrecord в чат что нибудь отсылается?

 

EvgMart

Делаю маппинг.
Пользователь
01.03.2015
164
62
0
Помогите исправить ошибки. Я всё вроде делал правильно, прям как вы написали. Но ошибки:(
 
D:\Zheka\AAA ìîäû CRMP 03e\RUBK RP Äðèôò ñåðâåð ÐÏ\crmp\YFwxxbjFXD\gamemodes\clrp.pwn(21390) : error 010: invalid function or declaration
D:\Zheka\AAA ìîäû CRMP 03e\RUBK RP Äðèôò ñåðâåð ÐÏ\crmp\YFwxxbjFXD\gamemodes\clrp.pwn(21393) : error 021: symbol already defined: "GetPlayerName"
D:\Zheka\AAA ìîäû CRMP 03e\RUBK RP Äðèôò ñåðâåð ÐÏ\crmp\YFwxxbjFXD\gamemodes\clrp.pwn(21394) : error 010: invalid function or declaration
D:\Zheka\AAA ìîäû CRMP 03e\RUBK RP Äðèôò ñåðâåð ÐÏ\crmp\YFwxxbjFXD\gamemodes\clrp.pwn(21398) : error 010: invalid function or declaration
D:\Zheka\AAA ìîäû CRMP 03e\RUBK RP Äðèôò ñåðâåð ÐÏ\crmp\YFwxxbjFXD\gamemodes\clrp.pwn(27438) : warning 204: symbol is assigned a value that is never used: "ProverkaNPC"
D:\Zheka\AAA ìîäû CRMP 03e\RUBK RP Äðèôò ñåðâåð ÐÏ\crmp\YFwxxbjFXD\gamemodes\clrp.pwn(27438 -- 74768) : warning 203: symbol is never used: "npcname"
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
 
 
4 Errors.
 

andrii

Новичок
Пользователь
02.05.2014
69
2
0
C:\Users\Andre\Desktop\Ñåðâåð\gamemodes\new.pwn(6758) : error 010: invalid function or declaration
C:\Users\Andre\Desktop\Ñåðâåð\gamemodes\new.pwn(6761) : error 021: symbol already defined: "GetPlayerName"
C:\Users\Andre\Desktop\Ñåðâåð\gamemodes\new.pwn(6762) : error 010: invalid function or declaration
C:\Users\Andre\Desktop\Ñåðâåð\gamemodes\new.pwn(6766) : error 010: invalid function or declaration
C:\Users\Andre\Desktop\Ñåðâåð\gamemodes\new.pwn(16630) : warning 219: local variable "log" shadows a variable at a preceding leve
C:\Users\Andre\Desktop\Ñåðâåð\gamemodes\new.pwn(804) : warning 204: symbol is assigned a value that is never used: "ProverkaNPC
C:\Users\Andre\Desktop\Ñåðâåð\gamemodes\new.pwn(804 -- 16830) : warning 203: symbol is never used: "npcname"

помогите

 
A

Amfy

Гость
Гость
У кого ошибки, строки показывайте с ошибками, что вы ждете?

 

Vlad_Trifonov

Гуру
Пользователь
13.03.2015
1 465
5
331
0
Бот коннектится, и через 4-ре секунды покидает сервер. строку "if(IsPlayerNPC(playerid)) return 1;" вставлял во все паблики - не помогает.

 

Ladislav

Новичок
Пользователь
03.08.2015
34
5
0
Создаем чистый .pwn файл и вносим в него следующий код:

[SIZE=1em]#define RECORDING_TYPE 1 //1 - если путь записан на машине, 2 - пешком[/SIZE]


#include <a_npc>
 
main(){}
 
public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
#if RECORDING_TYPE == 1
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
public OnNPCExitVehicle() StopRecordingPlayback();
#else
public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING); .
#endif

Компилируем и закрываем. 
А написать куда потом файл amx кинуть не нужно? 

 
Последнее редактирование модератором:

Nikitqa

Новичок
Пользователь
16.03.2014
35
0
0
public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
error 010: invalid function or declaration

Что делать?

 
Последнее редактирование модератором:

Nikitqa

Новичок
Пользователь
16.03.2014
35
0
0
@Nikitqa, В данной строке после ; стоит . , из-за которой не комплимирует... Мда..