HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 10.08.2022, 00:26
Hideme Flow
Постоянный
Регистрация: 27.04.2020
Сообщений: 570
С нами: 3182536

Репутация: 48


По умолчанию

1. как получить список серверов с вкладки internet, hosted?







2. как узнать по iport

2.1 стоит ли пароль на сервере

2.2 название сервера

2.3 онлайн

2.4 пинг (как у клиента самп)

2.5 мод сервера

2.6 язык сервера
 
Ответить с цитированием

  #2  
Старый 10.08.2022, 00:29
chapo
Флудер
Регистрация: 10.10.2016
Сообщений: 9,228
С нами: 5046982

Репутация: 183


По умолчанию

1. перепиши это https://www.blast.hk/threads/127509/, других способов я не видел

2. samp query https://github.com/zeelorenc/SA-MP-Server-Query-Class
 
Ответить с цитированием

  #3  
Старый 10.08.2022, 00:32
Hideme Flow
Постоянный
Регистрация: 27.04.2020
Сообщений: 570
С нами: 3182536

Репутация: 48


По умолчанию

Цитата:
Сообщение от chapo  

1. перепиши это https://www.blast.hk/threads/127509/, других способов я не видел
там с вкладки favorites, а мне надо internet
 
Ответить с цитированием

  #4  
Старый 10.08.2022, 00:44
Gloom
Новичок
Регистрация: 09.03.2021
Сообщений: 14
С нами: 2727275

Репутация: 18
По умолчанию

http://lists.sa-mp.com/0.3.7/hosted - список серверов Hosted

Во вкладке Internet уже давно просто дублируется информация со вкладки Hosted
 
Ответить с цитированием

  #5  
Старый 11.08.2022, 11:43
F0RQU1N and
Познавший АНТИЧАТ
Регистрация: 29.09.2018
Сообщений: 1,292
С нами: 4012500

Репутация: 138


По умолчанию

Список серверов вроде как через recv приходит откуда то, я смотрел
 
Ответить с цитированием

  #6  
Старый 31.03.2023, 02:04
_=Gigant=_
Участник форума
Регистрация: 19.01.2017
Сообщений: 130
С нами: 4901705

Репутация: 98
По умолчанию

C:





Код:
private readonly List

_servers
=
new List

(
)
;
private async
void
timer1_Tick
(
object sender
,
EventArgs e
)
{
try
{
// Download servers from both sources
var serverLists
=
await Task
.
WhenAll
(
DownloadServerList
(
"http://lists.sa-mp.com/0.3.7/hosted"
)
,
DownloadServerList
(
"http://lists.sa-mp.com/0.3.7/internet"
)
)
;
// Combine the lists and remove duplicates
var serverList
=
serverLists
.
SelectMany
(
s
=
>
s
)
.
Distinct
(
)
.
ToArray
(
)
;
var serversToRemove
=
_servers
.
Except
(
serverList
)
.
ToList
(
)
;
var serversToAdd
=
serverList
.
Except
(
_servers
)
.
ToList
(
)
;
foreach
(
var server in serversToRemove
)
{
int
rowIndex
=
dataGridView1
.
Rows
.
Cast

(
)
.
FirstOrDefault
(
row
=
>
row
.
Cells
[
0
]
.
Value
!=
null
&&
row
.
Cells
[
0
]
.
Value
.
ToString
(
)
==
server
)
?
.
Index
?
?
-
1
;
if
(
rowIndex
!=
-
1
)
{
dataGridView1
.
Rows
.
RemoveAt
(
rowIndex
)
;
}
}
foreach
(
var server in serversToAdd
)
{
_servers
.
Add
(
server
)
;
dataGridView1
.
Rows
.
Add
(
server
)
;
}
if
(
serversToAdd
.
Count
>
0
&&
!
_backgroundWorker
.
IsBusy
)
{
_backgroundWorker
.
RunWorkerAsync
(
)
;
//   lblServersOnline.Text = $"Online Servers: {dataGridView1.RowCount} ";
timer1
.
Stop
(
)
;
}
}
catch
(
HttpRequestException ex
)
{
Console
.
WriteLine
(
$
"Error retrieving content: {ex.Message}"
)
;
}
}
private async Task

DownloadServerList
(
string url
)
{
HttpResponseMessage response
=
await _httpClient
.
GetAsync
(
url
)
;
response
.
EnsureSuccessStatusCode
(
)
;
string responseBody
=
await response
.
Content
.
ReadAsStringAsync
(
)
;
return
responseBody
.
Split
(
new
[
]
{
"\r\n"
,
"\r"
,
"\n"
}
,
StringSplitOptions
.
RemoveEmptyEntries
)
;
}
private
void
_backgroundWorker_DoWork
(
object sender
,
DoWorkEventArgs e
)
{
while
(
true
)
{
for
(
int
i
=
0
;
i

kvp in api
.
read
(
true
)
)
{
switch
(
kvp
.
Key
)
{
case
"hostname"
:
dataGridView1
.
Rows
[
i
]
.
Cells
[
1
]
.
Value
=
kvp
.
Value
;
break
;
case
"players"
:
iPlayers
=
Convert
.
ToInt32
(
kvp
.
Value
)
;
break
;
case
"maxplayers"
:
iMaxPlayers
=
Convert
.
ToInt32
(
kvp
.
Value
)
;
break
;
case
"gamemode"
:
dataGridView1
.
Rows
[
i
]
.
Cells
[
4
]
.
Value
=
kvp
.
Value
;
break
;
/* case "mapname":
                                    dataGridView1.Rows[i].Cells[5].Value = kvp.Value;
                                    break;*/
default
:
// Do something when key is not hostname or some other
break
;
}
dataGridView1
.
Rows
[
i
]
.
Cells
[
2
]
.
Value
=
$
"       {iPlayers + "
/
" + iMaxPlayers} "
;
}
// Hide or remove previous rows with empty Hostname
for
(
int
j
=
i
-
1
;
j
>=
0
;
j
--
)
{
if
(
string
.
IsNullOrEmpty
(
dataGridView1
.
Rows
[
j
]
.
Cells
[
1
]
.
Value
?
.
ToString
(
)
)
)
{
dataGridView1
.
Invoke
(
(
MethodInvoker
)
delegate
{
dataGridView1
.
Rows
[
j
]
.
Visible
=
false
;
}
)
;
}
else
{
break
;
}
}
}
else
{
// Wait for row to be updated before moving to the next one
System
.
Threading
.
Thread
.
Sleep
(
100
)
;
i
--
;
// stay at the same index since the row is not fully populated yet
}
}
// Wait for 5 minutes before updating the DataGridView again
System
.
Threading
.
Thread
.
Sleep
(
5
*
60
*
1000
)
;
}
}
 
Ответить с цитированием

  #7  
Старый 26.07.2023, 07:39
Escobar_Montana
Новичок
Регистрация: 08.03.2023
Сообщений: 1
С нами: 1678295

Репутация: 1
По умолчанию

Цитата:
Сообщение от _=Gigant=_  

C:





Код:
private readonly List

_servers
=
new List

(
)
;
private async
void
timer1_Tick
(
object sender
,
EventArgs e
)
{
try
{
// Download servers from both sources
var serverLists
=
await Task
.
WhenAll
(
DownloadServerList
(
"http://lists.sa-mp.com/0.3.7/hosted"
)
,
DownloadServerList
(
"http://lists.sa-mp.com/0.3.7/internet"
)
)
;
// Combine the lists and remove duplicates
var serverList
=
serverLists
.
SelectMany
(
s
=
>
s
)
.
Distinct
(
)
.
ToArray
(
)
;
var serversToRemove
=
_servers
.
Except
(
serverList
)
.
ToList
(
)
;
var serversToAdd
=
serverList
.
Except
(
_servers
)
.
ToList
(
)
;
foreach
(
var server in serversToRemove
)
{
int
rowIndex
=
dataGridView1
.
Rows
.
Cast

(
)
.
FirstOrDefault
(
row
=
>
row
.
Cells
[
0
]
.
Value
!=
null
&&
row
.
Cells
[
0
]
.
Value
.
ToString
(
)
==
server
)
?
.
Index
?
?
-
1
;
if
(
rowIndex
!=
-
1
)
{
dataGridView1
.
Rows
.
RemoveAt
(
rowIndex
)
;
}
}
foreach
(
var server in serversToAdd
)
{
_servers
.
Add
(
server
)
;
dataGridView1
.
Rows
.
Add
(
server
)
;
}
if
(
serversToAdd
.
Count
>
0
&&
!
_backgroundWorker
.
IsBusy
)
{
_backgroundWorker
.
RunWorkerAsync
(
)
;
//   lblServersOnline.Text = $"Online Servers: {dataGridView1.RowCount} ";
timer1
.
Stop
(
)
;
}
}
catch
(
HttpRequestException ex
)
{
Console
.
WriteLine
(
$
"Error retrieving content: {ex.Message}"
)
;
}
}
private async Task

DownloadServerList
(
string url
)
{
HttpResponseMessage response
=
await _httpClient
.
GetAsync
(
url
)
;
response
.
EnsureSuccessStatusCode
(
)
;
string responseBody
=
await response
.
Content
.
ReadAsStringAsync
(
)
;
return
responseBody
.
Split
(
new
[
]
{
"\r\n"
,
"\r"
,
"\n"
}
,
StringSplitOptions
.
RemoveEmptyEntries
)
;
}
private
void
_backgroundWorker_DoWork
(
object sender
,
DoWorkEventArgs e
)
{
while
(
true
)
{
for
(
int
i
=
0
;
i

kvp in api
.
read
(
true
)
)
{
switch
(
kvp
.
Key
)
{
case
"hostname"
:
dataGridView1
.
Rows
[
i
]
.
Cells
[
1
]
.
Value
=
kvp
.
Value
;
break
;
case
"players"
:
iPlayers
=
Convert
.
ToInt32
(
kvp
.
Value
)
;
break
;
case
"maxplayers"
:
iMaxPlayers
=
Convert
.
ToInt32
(
kvp
.
Value
)
;
break
;
case
"gamemode"
:
dataGridView1
.
Rows
[
i
]
.
Cells
[
4
]
.
Value
=
kvp
.
Value
;
break
;
/* case "mapname":
                                    dataGridView1.Rows[i].Cells[5].Value = kvp.Value;
                                    break;*/
default
:
// Do something when key is not hostname or some other
break
;
}
dataGridView1
.
Rows
[
i
]
.
Cells
[
2
]
.
Value
=
$
"       {iPlayers + "
/
" + iMaxPlayers} "
;
}
// Hide or remove previous rows with empty Hostname
for
(
int
j
=
i
-
1
;
j
>=
0
;
j
--
)
{
if
(
string
.
IsNullOrEmpty
(
dataGridView1
.
Rows
[
j
]
.
Cells
[
1
]
.
Value
?
.
ToString
(
)
)
)
{
dataGridView1
.
Invoke
(
(
MethodInvoker
)
delegate
{
dataGridView1
.
Rows
[
j
]
.
Visible
=
false
;
}
)
;
}
else
{
break
;
}
}
}
else
{
// Wait for row to be updated before moving to the next one
System
.
Threading
.
Thread
.
Sleep
(
100
)
;
i
--
;
// stay at the same index since the row is not fully populated yet
}
}
// Wait for 5 minutes before updating the DataGridView again
System
.
Threading
.
Thread
.
Sleep
(
5
*
60
*
1000
)
;
}
}

Cкинь пожалуйста файлом, ибо у меня не копируется как бы не пытался. В первый раз с таким сталкиваюсь.
 
Ответить с цитированием

  #8  
Старый 30.07.2023, 22:24
_=Gigant=_
Участник форума
Регистрация: 19.01.2017
Сообщений: 130
С нами: 4901705

Репутация: 98
По умолчанию

Цитата:
Сообщение от Escobar_Montana  

Cкинь пожалуйста файлом, ибо у меня не копируется как бы не пытался. В первый раз с таким сталкиваюсь.
New Text Document(2)

MediaFire is a simple to use free service that lets you put all your photos, documents, music, and video in a single place so you can access them anywhere and share them everywhere.

www.mediafire.com
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору.