Как да направим сървър на cs 1.6

Статус
Not open for further replies.

human

Registered
Значи сега ще ви покажа как да си направим сървар на counter-strike 1.6. Първото което трябва да направите е да свалите amx mod от Официалния БГ сайт DownLoaD (трябва да сте регистрирани в сайта) . След това качвате тези файлове в папка cstrike в папката на cs.(трябва да се качи папка addons).Този мод не е задължителен, това е този който показва Ранк-а на играча, който казва GodLike и т.н. След това влизате в папката на cs(не cstrike,a предишната) и пускате hlds.exe .Когато го пуснете ще ви се покаже един прозорец :
s.png
.Най горе му давате Counter-strike(мойто е condition zero, но това е от цс-а който свалих) .На второто пишете името на сървара,на третото давате картата, на четвъртото мрежата (на ЛАН могат да влизат и хора от др мрежа , но май и на internet става) . След това давате колко човека максимално да играят в сървара(по-добре по-малко защото ще лагва) .След това давате порта.Пишете 27015, ако не стане 27016. После пишете паролата на сървара(използва се с командата rcon_password .Давате Start Server и сте готово .

Не забравяйте, трябва да сте с реално IP за да могат други хора да влизат в сървара!






Долното е написано от потребител Rk8752 и обяснява как
да си вкарате данните от сървъра да излизат в сайта.


http://web-tourist.net/login/login/view.php?st=3007


Гледах, че много CS маняци питат как да си направят сървъра да им излиза в сайта.
Името, играчите, ИП-то, Картата, и Статуса.
Та реших да направя урочето и който го интересува да погледне и да си го направи :)

Та да не губим време да започваме :)

Както винаги започваме с главната страница:
index.php
Там ще сложим кода който ще извежда картинката и надписите на нея :)
Така съм приготвил 1 картинка не много сложна елементарна на който му харесва може да я ползва на която ще излиза информацията за сървъра.

bg.png:
815.png


index.php:
Код:
<?php 
header("Content-type: image/png; charset=windows-1251"); 
require_once("inc.php"); 
$ip_port = array( 
1 => "85.187.32.205:27015" //Тук пишеш IP адресът и портът 
); 

$rand = rand(1, count($ip_port)); 
$getip_port = explode(":", $ip_port[$rand]); 

$ip = $getip_port[0]; 
$port = $getip_port[1]; 

$s = &new serverinfo($ip, $port); 
$s->getServerData(); 
$hostname = $s->serverData['hostname']; // Име на сървъра
$players = $s->serverData['players']; //Броя на играчите 
$maxplayers = $s->serverData['maxplayers']; //Максималния брой на играчи 
$map = $s->serverData['map']; //Картата 


$image = imagecreatefrompng("bg.png"); //Тук пишеш пътя до картинката за фон. Хубаво е да е в същата папка или поне на същия сървър 
$black = imagecolorallocate($image, 0, 255, 255); //Създаваме черен цвят 
$red = imagecolorallocate($image, 255, 0, 0); //Създаваме червен цвят 
$green = imagecolorallocate($image, 0, 255, 0); //Създаваме зелен цвят 
$fontsize = 3; //Може да бъде число от 1 до 5. Определя големината на шрифта 

imagestring($image, $fontsize, 585, 27, "" . $players ." / ".$maxplayers, $black); //x = 10, y = 10 
imagestring($image, $fontsize, 310, 74, "" . $ip_port[1], $black); //x = 10, y = 30 
imagestring($image, $fontsize, 460, 26, "" . $map, $black); //x = 10, y = 50 
imagestring($image, $fontsize, 290, 26, "" . $name, $black); //x = 10, y = 50 
if($s->getStatus()) { 
imagestring($image, $fontsize, 10, 90, "", $red); //x = 10, y = 70 
imagestring($image, $fontsize, 540, 74, "Online", $green); //x = 80, y = 70 
} else { 
imagestring($image, $fontsize, 10, 90, "", $red); //x = 10, y = 70 
imagestring($image, $fotnsize, 540, 74, "Offline", $red); //x = 80, y = 70 
} 

imagepng($image); 
imagedestroy($image); 
?>

Там кадето пише ИП-то на неготово място слагате вашето ИП:
1 => "85.187.32.205:27015" //Тук пишеш IP адресът и портът
Задължително е да се сложи ИП+Порт за да няма магарий :D

Там където виждате тези редове
[] imagestring($image, $fontsize, 585, 27, "" . $players ." / ".$maxplayers, $black); //x = 10, y = 10
imagestring($image, $fontsize, 310, 74, "" . $ip_port[1], $black); //x = 10, y = 30
imagestring($image, $fontsize, 460, 26, "" . $map, $black); //x = 10, y = 50
imagestring($image, $fontsize, 290, 26, "" . $hostname, $black); //x = 10, y = 50
if($s->getStatus()) {
imagestring($image, $fontsize, 10, 90, "", $red); //x = 10, y = 70
imagestring($image, $fontsize, 540, 74, "Online", $green); //x = 80, y = 70
} else {
imagestring($image, $fontsize, 10, 90, "", $red); //x = 10, y = 70
imagestring($image, $fotnsize, 540, 74, "Offline", $red); //x = 80, y = 70

На за да преместитте текста променяте цифрите който се намират след $fontsize

На редовете
$image = imagecreatefrompng("bg.png"); //Тук пишеш пътя до картинката за фон. Хубаво е да е в същата папка или поне на същия сървър
$black = imagecolorallocate($image, 0, 255, 255); //Създаваме черен цвят
$red = imagecolorallocate($image, 255, 0, 0); //Създаваме червен цвят
$green = imagecolorallocate($image, 0, 255, 0); //Създаваме зелен цвят
$fontsize = 3; //Може да бъде число от 1 до 5. Определя големината на шрифта

Да започнем с реда където взема картинката bg.png ако случайно искате да ви се намира картинката в папката imagesпред нея напишете images/за да се получи images/bg.png
По надоло []$back, $red, $green[] това са цветовете който можете да ползвате разбира се може да добавите и ваши или да ги промените като смените цифрите след []$image[]
И накрая остана []$fontsize[] това е големина та на буквите можете да го промените от 1 до 5 както пише но за препоръка е да си стои 3 :)

Ето и следващия файл че стана много дълъг урока :)

inc.php
Код:
<?php 
class serverinfo 
{ 
var $ip; 
var $port; 

var $fp; 
var $timeout; 

var $serverData; 
var $playerData; 


function serverinfo($ip, $port, $timeout = 3) 
{ 
$this->ip = $ip; 
$this->port = $port; 

$this->fp = fsockopen("udp://" . $ip, $port); 
$this->timeout = $timeout; 
} 


function getServerData() 
{ 
$this->writeData($this->getQuery("A2S_INFO")); 

$this->getData("byte"); 
$this->getString(); 
$this->serverData['hostname'] = $this->getString(); 
$this->serverData['map'] = $this->getString(); 
$this->getString(); 
$this->serverData['mod'] = $this->getString(); 
$this->serverData['players'] = $this->getData("byte"); 
$this->serverData['maxplayers'] = $this->getData("byte"); 
$this->getData("byte"); 
$this->serverData['servertype'] = (chr($this->getData("byte")) == "d") ? "Dedicated" : "Listen"; 
$this->serverData['server_os'] = (chr($this->getData("byte")) == "w") ? "Windows" : "Linux"; 
$this->serverData['password'] = $this->getData("byte"); 
$this->getData("byte"); 
$this->getString(); 
$this->getString(); 
$this->getString(); 
$this->getData("long"); 
$this->getData("long"); 
$this->getData("byte"); 
$this->getData("byte"); 
$this->serverData['vac'] = $this->getData("byte"); 
$this->getData("byte"); 
} 


function getPlayerData() 
{ 
$this->writeData($this->getQuery("A2S_PLAYER")); 

fread($this->fp, 4); 
$this->getData("byte"); 

$count = $this->getData("byte"); 

for($i = 0; $i < $count; $i++) 
{ 
$this->playerData[$i]['id'] = $this->getData("byte"); 
$this->playerData[$i]['name'] = $this->getString(); 
$this->playerData[$i]['frags'] = $this->getData("long"); 
$this->playerData[$i]['time'] = round($this->getData("float")); 
} 
} 


function getQuery($queryType) 
{ 
switch($queryType) 
{ 
case "A2S_SERVERQUERY_GETCHALLENGE": 
return "\xFF\xFF\xFF\xFF\x57"; 
break; 

case "A2S_INFO": 
return "\xFF\xFF\xFF\xFFTSource Engine Query\x00"; 
break; 

case "A2S_PLAYER": 
return sprintf("\xFF\xFF\xFF\xFFU%s", $this->getChallenge()); 
break; 
} 
} 


function getChallenge() 
{ 
$this->writeData($this->getQuery("A2S_SERVERQUERY_GETCHALLENGE")); 

return substr(fread($this->fp, 16), 5, 9); 
} 


function getData($type) 
{ 
switch($type) 
{ 
case "long": 
$data = unpack("L", fread($this->fp, 4)); 
return $data[1]; 
break; 

case "byte": 
return ord(fread($this->fp, 1)); 
break; 

case "char": 
return fread($this->fp, 1); 
break; 

case "float": 
$data = unpack("f", fread($this->fp, 4)); 
return $data[1]; 
break; 
} 
} 


function getString() 
{ 
$string = ''; 
$loop = TRUE; 

while($loop) 
{ 
$_fp = $this->getData("char"); 

if( ord($_fp) != 0 ) 
{ 
$string .= $_fp; 
} 
else { $loop = FALSE; } 
} 

return $string; 
} 


function writeData($input) 
{ 
if( !$this->fp ) 
{ 
exit("Error: Couldn't connect to server."); 
} 
else { 
fwrite($this->fp, $input); 
socket_set_timeout($this->fp, $this->timeout); 
} 
} 


function setTimeFormat($format, $input) 
{ 
$hours = floor($input / 3600); 
$input = $input % 3600; 

$minutes = floor($input / 60); 
$input = $input % 60; 

$seconds = round($input); 

return sprintf($format, $hours, $minutes, $seconds); 
} 


function sortPlayers($sort = "time", $type = "desc") 
{ 
if(isset($this->playerData[0][$sort])) 
{ 
for($i = 0; $i < count($this->playerData); $i++) 
{ 
$temp[] = $this->playerData[$i][$sort]; 
} 

switch($sort) 
{ 
case "name": 
uasort($temp, "strcasecmp"); 
break; 

default: 
if($type == "desc") { 
arsort($temp); 
} 
elseif($type == "asc") { 
asort($temp); 
} 
break; 
} 

foreach($temp as $key => $value) 
{ 
$keys[] = $key; 
} 

foreach($keys AS $k => $v) 
{ 
$tempvar[$k]['id'] = $this->playerData[$v]['id']; 
$tempvar[$k]['name'] = $this->playerData[$v]['name']; 
$tempvar[$k]['frags'] = $this->playerData[$v]['frags']; 
$tempvar[$k]['time'] = $this->playerData[$v]['time']; 
} 

$this->playerData = $tempvar; 
} 
} 

function getStatus() { 
$status = @fsockopen($ip, $port, $errno, $errstr, 3); 
if (!$status) { 
return 1; 
} else { 
return 0; 
} 
} 
} 
?>

Няколко думи за този файл.
От този файл се зема информацитята за сървъра и се извежда в index.php за да няма проблеми по добре не го барайте ако не го разбирате :)

Ако имате въпроси или проблеми задайте ги в коментарите или на ЛС също така най-добре в форума има хора който разбират повече от мене и те могат също да ви помогнат :)
 
Статус
Not open for further replies.

Горе