ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   с# | cpp samp client (https://forum.antichat.xyz/showthread.php?t=1444523)

Hideme Flow 10.08.2022 00:26

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





https://forum.antichat.xyz/attachments/28110597/

2. как узнать по ip:port

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

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

2.3 онлайн

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

2.5 мод сервера

2.6 язык сервера

chapo 10.08.2022 00:29

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

2. samp query https://github.com/zeelorenc/SA-MP-Server-Query-Class

Hideme Flow 10.08.2022 00:32

Цитата:

Сообщение от chapo

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

там с вкладки favorites, а мне надо internet

Gloom 10.08.2022 00:44

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

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

F0RQU1N and 11.08.2022 11:43

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

_=Gigant=_ 31.03.2023 02:04

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
)
;
}
}


Escobar_Montana 26.07.2023 07:39

Цитата:

Сообщение от _=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кинь пожалуйста файлом, ибо у меня не копируется как бы не пытался. В первый раз с таким сталкиваюсь.

_=Gigant=_ 30.07.2023 22:24

Цитата:

Сообщение от 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


Время: 19:08