PDA

Просмотр полной версии : [Вопрос] Стример блокирует NPC бота.



Айболит
14.09.2014, 22:08
Ребятушки добрый вечер, не кто не знает почему стример блокирует NPC бота.. Дело именно в нем, ибо подключал без него, бот заходил и подключался, включил стример, бот подключился и отключился сразу же.. С этого я и сделал выводы, что стример блочит бота... Не знаю как быть, и стример нужен для погрузки объектов + текстур, и бот нужен, для реализации идей!


p.S : Кто сталкивался с таким?

- - - Добавлено - - -

[20:08:05] Incoming connection: 127.0.0.1:3768
[20:08:06] [npc:join] [BOT]CJ has joined the server (0:127.0.0.1)
[20:08:06] [npc:part] [BOT]CJ has left the server (0:2)

Archange
14.09.2014, 22:14
Какая версия Streamer?

Айболит
14.09.2014, 22:18
Какая версия Streamer?


Licensed under the Apache License, Version 2.0 (the "License");

DeimoS
14.09.2014, 22:19
Залогируйте каждый коллбэк, вызываемый во время подключения игрока к серверу и посмотрите на каком из коллбэков бота кикает

Айболит
14.09.2014, 22:26
v2.7.4

- - - Добавлено - - -


Залогируйте каждый коллбэк, вызываемый во время подключения игрока к серверу и посмотрите на каком из коллбэков бота кикает

Я загружаю через ФС, пробовал через ongamemodeinit.. Так же само.. Через инклуд пробовал.

DeimoS
14.09.2014, 22:41
v2.7.4

- - - Добавлено - - -



Я загружаю через ФС, пробовал через ongamemodeinit.. Так же само.. Через инклуд пробовал.

Я, конечно, рад за вас, но сделайте то, что я от вас просил

Айболит
14.09.2014, 22:45
Я, конечно, рад за вас, но сделайте то, что я от вас просил

Если честно я не понял.. :blush:

DeimoS
14.09.2014, 22:47
Если честно я не понял.. :blush:

В начало каждого public вставьте

print("Текст");
Где вместо "Текст" будет название public. И после включите мод. Как только бота кикнет, скиньте логи

OKStyle
14.09.2014, 23:01
Мод пустой или готовый? Там в OnPlayerConnect надо return 1 поставить при условии бота.

Айболит
14.09.2014, 23:16
Не знаю я то сделал или нет.. Вот что вышло..

[21:03:10] Number of vehicle models: 7
[21:03:10] Incoming connection: 127.0.0.1:1876
[21:03:10] [npc:join] [BOT]CJ has joined the server (0:127.0.0.1)
[21:03:10] OnPlayerConnect
[21:03:10] OnPlayerRequestClass
[21:03:11] kick
[21:03:11] OnPlayerDisconnect
[21:03:11] [npc:part] [BOT]CJ has left the server (0:2)
[21:03:11] AFKCheck

- - - Добавлено - - -


Мод пустой или готовый? Там в OnPlayerConnect надо return 1 поставить при условии бота.

Мод пишу сам с 0..

- - - Добавлено - - -


Не знаю я то сделал или нет.. Вот что вышло..

[21:03:10] Number of vehicle models: 7
[21:03:10] Incoming connection: 127.0.0.1:1876
[21:03:10] [npc:join] [BOT]CJ has joined the server (0:127.0.0.1)
[21:03:10] OnPlayerConnect
[21:03:10] OnPlayerRequestClass
[21:03:11] kick
[21:03:11] OnPlayerDisconnect
[21:03:11] [npc:part] [BOT]CJ has left the server (0:2)
[21:03:11] AFKCheck

- - - Добавлено - - -



Мод пишу сам с 0..

Стои..

- - - Добавлено - - -


Мод пустой или готовый? Там в OnPlayerConnect надо return 1 поставить при условии бота.


Стоит**

DeimoS
14.09.2014, 23:26
код OnPlayerRequestClass в студию

Айболит
14.09.2014, 23:32
public OnPlayerRequestClass(playerid, classid)
{
print("OnPlayerRequestClass");
// SetPVarInt(playerid, "TPS", TogglePlayerSpectating(playerid, true));
//----------------------------------------------------------------------|
//SetPlayerPos(playerid, 0.0, 0.0, 0.0); // Положение игрока.
//SetPlayerCameraPos(playerid, 1649.8954,-1013.8740,137.4525); // Камера
//SetPlayerCameraLookAt(playerid, 1649.8954,-1013.8740,137.4525); // Камера
//----------------------------------------------------------------------|

//
switch(PAccount[playerid])
{
case 1:
{
//if(PAccount[playerid] == 1)// Если аккаунт есть
new string[256],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string, 256, "Добро пожаловать на сервер: "DR" "servername" \n\n"W"Ваш аккаунт зарегистрирован на сервере!\nВаш игровой логин:"DR" %s \n\n"W"Введите ваш пароль в поле ниже:", playername);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, " "DR"~Авторизация аккаунта~ ", string, "Далее", "");
}
case 0:
//else// Если аккаунта нет
{
SendClientMessage(playerid, -1, ""); SendClientMessage(playerid, -1, ""); SendClientMessage(playerid, -1, ""); SendClientMessage(playerid, -1, ""); SendClientMessage(playerid, -1, "");
SendClientMessage(playerid, -1, ""); SendClientMessage(playerid, -1, ""); SendClientMessage(playerid, -1, ""); SendClientMessage(playerid, -1, ""); SendClientMessage(playerid, -1, "");
SendClientMessage(playerid, 0xF0F0F0FF, "Выбирайте пароль посложнее, состоящий из символов разного регистра, с цифрами и [для абсолютной надёжности] знаками препинания.");
SendClientMessage(playerid, 0xF0F0F0FF, "Не используйте пароль, связанный с теми данными, которые могут быть о вас известны, например, ваше имя или дату рождения.");
SendClientMessage(playerid, 0xF0F0F0FF, "Пример пароля : Цифры, регистр : HTs2mwo0 Слово и число : hyeb8207 Простой пароль : aylnccsm");
new string[256],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string, 256, "Добро пожаловать на сервер: "DR" "servername" \n\n"W"Ваш аккаунт не зарегистрирован на сервере!\nВаш игровой логин:"DR" %s \n\n"W"Для начала игры необходимо пройти регистрацию\nВведите ваш будующий пароль в поле ниже:", playername);
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, " "G"~Регистрация аккаунта~ ", string, "Далее", "");

//ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Регистрация аккаунта","{FAFAFA}Зарегистрируйтесь введя пароль в окошко\n{Выбирайте пароль посложнее, состоящий из символов разного регистра, с цифрами и [для абсолютной надёжности] знаками препинания.\nНе используйте пароль, связанный с теми данными, которые могут быть о вас известны, например, ваше имя или дату рождения.\n{FF0A00}Пример пароля : Цифры, регистр : HTs2mwo0 Слово и число : hyeb8207 Простой пароль : aylnccsm","Ввод","");
}
}
return 1;
}

DeimoS
15.09.2014, 07:09
Так и где у вас тут проверки на ботов? Или у вас боты умеют нажимать на кнопки в диалоговых окнах и вводить пароли?

Айболит
15.09.2014, 08:10
Так и где у вас тут проверки на ботов? Или у вас боты умеют нажимать на кнопки в диалоговых окнах и вводить пароли?

Так что мне сделать, подскажите, пожалуйста...

DeimoS
15.09.2014, 08:53
Использовать функцию IsPlayerNPC, дабы боты могли обходить авторизацию/античиты и прочее, что может их как-то остановить

Айболит
15.09.2014, 17:01
Использовать функцию IsPlayerNPC, дабы боты могли обходить авторизацию/античиты и прочее, что может их как-то остановить

Я так и делаю, но странности происходят когда я подключаю стример!! без него все работает отлично...

#define RECORDING "HELP" //This is the filename of your recording without the extension.
#define RECORDING_TYPE 2 //1 for in vehicle and 2 for on foot.

#include <a_samp>

new cjcar;

public OnGameModeInit()
{
ConnectNPC("[BOT]CJ","HELP");
cjcar = AddStaticVehicle(454,0,0,0,0,26,26); // car
}

public OnPlayerSpawn(playerid)
{
if(IsPlayerNPC(playerid)) //Checks if the player that just spawned is an NPC.
{
new npcname[64];
GetPlayerName(playerid,npcname,64);
if(!strcmp(npcname,"[BOT]CJ",true))
{
PutPlayerInVehicle(playerid, cjcar, 2);
SetPlayerColor(playerid,0x0000BBAA);
SetPlayerSkin(playerid, 171);
return 1;
}
return 0;
}
return 1;
}

underwoker
15.09.2014, 18:13
if(IsPlayerNPC(playerid)) return true;
Используйте в паблике где у вас бот отключается.

Айболит
15.09.2014, 18:24
if(IsPlayerNPC(playerid)) return true;
Используйте в паблике где у вас бот отключается.

Увы, не помогло..

DeimoS
15.09.2014, 18:48
В OnPlayerConnect/OnPlayerRequestClass и прочие коллбеки добавьте тот код, что дали выше:

if(IsPlayerNPC(playerid)) return true;
Либо поменяйте версию стримера, но вряд ли это поможет, ибо сейчас бот тупо не может пройти авторизацию

Айболит
15.09.2014, 18:58
В OnPlayerConnect/OnPlayerRequestClass и прочие коллбеки добавьте тот код, что дали выше:

if(IsPlayerNPC(playerid)) return true;
Либо поменяйте версию стримера, но вряд ли это поможет, ибо сейчас бот тупо не может пройти авторизацию

Не помогло, да уж, стример менял, так же...

DeimoS
15.09.2014, 19:27
Не помогло, да уж, стример менял, так же...

Значит дело не в стримере, а вы где-то забыли добавить нужные проверки. У всех остальных же всё работает.
Показывайте как делали то, что вам не помогло

Айболит
15.09.2014, 19:38
Как не в нем! смотрите, я беру старую версию сервер без стримера (Копия 3 месяца назад), запускаю копию, бот работает, запускаю копию со стримером, бот выходит! значит??? дело в стримере!

- - - Добавлено - - -

ах да, проверки чего?, в самом gamemode что то нужно делать или что?..

DeimoS
15.09.2014, 20:03
Как не в нем! смотрите, я беру старую версию сервер без стримера (Копия 3 месяца назад), запускаю копию, бот работает, запускаю копию со стримером, бот выходит! значит??? дело в стримере!

Я запускаю любой мод, подключаю к нему стример и следом подключаю бота. Всё работает! Значит что? Дело в вашем коде!

http://breedpmnr.ru/i/EC52657

Либо у вас какая-то система блокирует бота и тот просто выходит, либо у вас есть код, вызывающий какой-то баг стримера, заставляющий отсоединиться бота. Хотя как вы себе представляете то, что стример кикает бота? Откуда у него такие полномочия вдруг появились? (если вы внимательно посмотрите логи, вы увидите, что бот не вылетел, а именно кикнут)


ах да, проверки чего?, в самом gamemode что то нужно делать или что?..

Проверку на то, бот ли подключается или игрок. Как вы прикажете боту проходить вашу систему авторизации или какую-то другую защитную систему?

Айболит
15.09.2014, 20:10
2.7.4 у меня стример!, может на этой версии баги?, попробую который у вас на скришоте, установить..

- - - Добавлено - - -

Собственно v 2.6.1 :(

http://i.imgur.com/QHoR8DI.png

DeimoS
15.09.2014, 20:20
Уфф, сделайте то, что я вам сказал ещё в самом начале и покажите то, как вы реализовали сказанное мной. Дело именно в ваших руках, а не в стримере или сампе

Айболит
15.09.2014, 20:21
Вообщем что я сделал..
В паблики:
OnPlayerSpawn
OnPlayerConnect

Поставил следующие:
if(IsPlayerNPC(playerid))return 1;

И заработало!

DeimoS Огромное спасибо что сказал поставить проверки, догнал потом как.

DeimoS
15.09.2014, 20:37
Вообщем что я сделал..
В паблики:
OnPlayerSpawn
OnPlayerConnect

Поставил следующие:
if(IsPlayerNPC(playerid))return 1;

И заработало!

DeimoS Огромное спасибо что сказал поставить проверки, догнал потом как.

Соответствующие проверки нужны и в различных античитах, дабы ботов не кикало.
Не за что =) Закрыто