 |

10.08.2022, 00:26
|
|
Постоянный
Регистрация: 27.04.2020
Сообщений: 570
С нами:
3182536
Репутация:
48
|
|
1. как получить список серверов с вкладки internet, hosted?
2. как узнать по ip  ort
2.1 стоит ли пароль на сервере
2.2 название сервера
2.3 онлайн
2.4 пинг (как у клиента самп)
2.5 мод сервера
2.6 язык сервера
|
|
|

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

10.08.2022, 00:32
|
|
Постоянный
Регистрация: 27.04.2020
Сообщений: 570
С нами:
3182536
Репутация:
48
|
|
там с вкладки favorites, а мне надо internet
|
|
|

10.08.2022, 00:44
|
|
Новичок
Регистрация: 09.03.2021
Сообщений: 14
С нами:
2727275
Репутация:
18
|
|
|
|
|

11.08.2022, 11:43
|
|
Познавший АНТИЧАТ
Регистрация: 29.09.2018
Сообщений: 1,292
С нами:
4012500
Репутация:
138
|
|
Список серверов вроде как через recv приходит откуда то, я смотрел
|
|
|

31.03.2023, 02:04
|
|
Участник форума
Регистрация: 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
)
;
}
}
|
|
|

26.07.2023, 07:39
|
|
Новичок
Регистрация: 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кинь пожалуйста файлом, ибо у меня не копируется как бы не пытался. В первый раз с таким сталкиваюсь.
|
|
|

30.07.2023, 22:24
|
|
Участник форума
Регистрация: 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)
|
|
|
|