Тема срачей, говнокода и путей их преодоления

Insallah

¯\_(ツ)_/¯
🏆
📜
Сообщения
1,450
Реакции
443
Была тут тема, где неизвестный автор немножко ебанулся:
PHP:
if( $lvl == 8 ) {
                /*
                Пылающий Паразит
                Кольчатый Страхочервь
                Хлюп
                Яростная Мокрица
                */
                $bots = array( 'Литейщик','Проклятие Глубин','Пустынник Маньяк','Пустынник Убийца','Рабочий Мглы','Смотритель Мглы','Сторож Мглы' );
            }
            if( $lvl == 9 ) {
                /*
                Пылающий Паразит
                Кольчатый Страхочервь
                Хлюп
                Яростная Мокрица
                */
                $bots = array( 'Механический Охранник','Механический Убийца','Жирный Зомби','Пустынник Убийца','Рабочий Мглы','Смотритель Мглы','Сторож Мглы','Дух-Хранитель','Заблудшая Душа' );
            }
            if( $lvl == 10 ) {
                /*
                Пылающий Паразит
                Кольчатый Страхочервь
                Хлюп
                Яростная Мокрица
                */
                $bots = array( 'Глубинный Зомби','Безумный Рыцарь','Сирена','Каменный Зомби','Заблудшая Душа','Дух-Хранитель','Кошмар Глубин','Банши','Дух','Прозерпина' );
            }
            
            
            $id2 = rand(0,(count($bots)-1));           
            $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "'.$bots[$id2].'" AND `level` <= "'.$u->info['level'].'" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1'));
ВЖУХ!
PHP:
$id2 = [];
if($lvl === 8) {
  $bots = array_rand(['Литейщик','Проклятие Глубин','Пустынник Маньяк','Пустынник Убийца','Рабочий Мглы','Смотритель Мглы','Сторож Мглы']);
} elseif( $lvl === 9 ) {
  $bots = array_rand(['Механический Охранник','Механический Убийца','Жирный Зомби','Пустынник Убийца','Рабочий Мглы','Смотритель Мглы','Сторож Мглы','Дух-Хранитель','Заблудшая Душа']);
} elseif( $lvl === 10 ) {
  $bots = array_rand(['Глубинный Зомби','Безумный Рыцарь','Сирена','Каменный Зомби','Заблудшая Душа','Дух-Хранитель','Кошмар Глубин','Банши','Дух','Прозерпина']);
}
if (!empty($bots)) {
  $id = mysql_fetch_array(mysql_query('SELECT * FROM `test_bot` WHERE `login` = "'.$bots.'" AND `level` <= "'.$u->info['level'].'" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1'));
}
elseif, чтобы проверки не шли одна за другой если отработала предыдущая.
=== вместо ==, чтобы принимался только integer
встроенная функция вместо внешнего рандомизатора потому что... ну почему бы и нет?
 

oxy

Продвинутый
🏆
📜
Сообщения
403
Реакции
85
Ну тогда давай уже вот так:

PHP:
$bots = [
    8 => ['Литейщик','Проклятие Глубин','Пустынник Маньяк','Пустынник Убийца','Рабочий Мглы','Смотритель Мглы','Сторож Мглы'],
    9 => ['Механический Охранник','Механический Убийца','Жирный Зомби','Пустынник Убийца','Рабочий Мглы','Смотритель Мглы','Сторож Мглы','Дух-Хранитель','Заблудшая Душа'],
    10 => ['Глубинный Зомби','Безумный Рыцарь','Сирена','Каменный Зомби','Заблудшая Душа','Дух-Хранитель','Кошмар Глубин','Банши','Дух','Прозерпина']
]

if(isset($bots[$lvl])){
    $botLogin = array_rand($bots[$lvl]);
    $id = mysql_fetch_array(mysql_query('SELECT `id` FROM `test_bot` WHERE `login` = "'.$botLogin.'" AND `level` <= "'.$u->info['level'].'" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1'));
}
 

oxy

Продвинутый
🏆
📜
Сообщения
403
Реакции
85
Я никогда не устану удивятся суржику в названии полей и переменных...
Блядь ну назовите вы уже все транслитом.. Напиши вместо level -> uroven, ну или воспользуйся уже переводчиком и посмотри как переводится слово пещера....
 

fulugan

Некто
Сообщения
5
Реакции
2
Ну тогда давай уже вот так:

PHP:
$bots = [
    8 => ['Литейщик','Проклятие Глубин','Пустынник Маньяк','Пустынник Убийца','Рабочий Мглы','Смотритель Мглы','Сторож Мглы'],
    9 => ['Механический Охранник','Механический Убийца','Жирный Зомби','Пустынник Убийца','Рабочий Мглы','Смотритель Мглы','Сторож Мглы','Дух-Хранитель','Заблудшая Душа'],
    10 => ['Глубинный Зомби','Безумный Рыцарь','Сирена','Каменный Зомби','Заблудшая Душа','Дух-Хранитель','Кошмар Глубин','Банши','Дух','Прозерпина']
]

if(isset($bots[$lvl])){
    $botLogin = array_rand($bots[$lvl]);
    $id = mysql_fetch_array(mysql_query('SELECT `id` FROM `test_bot` WHERE `login` = "'.$botLogin.'" AND `level` <= "'.$u->info['level'].'" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1'));
}
PHP:
$botLogin = array_rand($bots[$lvl]);

$id = mysql_fetch_array(mysql_query('SELECT `id` FROM `test_bot` WHERE `login` = "'.$botLogin.'" AND `level` <= "'.$u->info['level'].'" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1'));
данный код не будет работать. array_rand возвращает индекс элемента массива, а не его содержимое.
нужно так:

PHP:
$botRnd = array_rand($bots[$lvl]);

    $botLogin = $bots[$lvl][$botRnd];

    $id = mysql_fetch_array(mysql_query('SELECT `id` FROM `test_bot` WHERE `login` = "'.$botLogin.'" AND `level` <= "'.$u->info['level'].'" AND `pishera` != "" AND `active` = "1" ORDER BY `level` DESC LIMIT 1'));

@DarksLight2, сложно код поместить в соответствующие теги ?
 
Последнее редактирование модератором:

Insallah

¯\_(ツ)_/¯
🏆
📜
Сообщения
1,450
Реакции
443
Да, это я что-то маху дал. О_о
$a = ['aaa', 'bbb' , 'hhh'];
echo $a[array_rand($a)];
 

Insallah

¯\_(ツ)_/¯
🏆
📜
Сообщения
1,450
Реакции
443
Были у меня одни бекапы баз...
code_language.powershell:
Param([switch]$Log,[switch]$Full);
$Server = ".\ARTZVITSQLSERVER";     # SQL Server Instance.           
$Dest = "z:\";    # Backup path     
$daysToStoreBackups = 3;

[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("utf-8")
[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.ConnectionInfo');           
[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.Management.Sdk.Sfc');           
[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO');           
# Requiered for SQL Server 2008 (SMO 10.0).           
[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMOExtended');           

$srv = New-Object Microsoft.SqlServer.Management.Smo.Server $Server;           
# If missing set default backup directory.           
If ($Dest -eq "")           
{ $Dest = $server.Settings.BackupDirectory + "\" };

Get-ChildItem "$Dest\*" |? { $_.lastwritetime -le (Get-Date).AddDays(-$daysToStoreBackups)} |% {Remove-Item $_ -force }
"Removed all previous backups older than $daysToStoreBackups days"
          
Write-Output ("Started at: " + (Get-Date -format yyyy-MM-dd-HH:mm:ss));           
# Full-backup for every database           
foreach ($db in $srv.Databases)           
{           
    If($Full)
    {
        If($db.Name -ne "tempdb")  # Non need to backup TempDB           
        {           
            $timestamp = Get-Date -format yyyy-MM-dd-HH-mm-ss;           
            $backup = New-Object ("Microsoft.SqlServer.Management.Smo.Backup");           
            $backup.Action = "Database";           
            $backup.Database = $db.Name;           
            $backup.Devices.AddDevice($Dest + $db.Name + "_full_" + $timestamp + ".bak", "File");           
            $backup.BackupSetDescription = "Full backup of " + $db.Name + " " + $timestamp;           
            $backup.Incremental = 0;           
            # Starting full backup process.           
            $backup.SqlBackup($srv);   
            # For db with recovery mode <> simple: Log backup.           
            If ($db.RecoveryModel -ne 3)           
            {           
                $timestamp = Get-Date -format yyyy-MM-dd-HH-mm-ss;           
                $backup = New-Object ("Microsoft.SqlServer.Management.Smo.Backup");           
                $backup.Action = "Log";           
                $backup.Database = $db.Name;           
                $backup.Devices.AddDevice($Dest + $db.Name + "_log_" + $timestamp + ".trn", "File");           
                $backup.BackupSetDescription = "Log backup of " + $db.Name + " " + $timestamp;           
                #Specify that the log must be truncated after the backup is complete.           
                $backup.LogTruncation = "Truncate";
                # Starting log backup process           
                $backup.SqlBackup($srv);           
            };           
        };
    }
    If($Log)
    {
            # For db with recovery mode <> simple: Log backup.           
            If ($db.RecoveryModel -ne 3)           
            {           
                $timestamp = Get-Date -format yyyy-MM-dd-HH-mm-ss;           
                $backup = New-Object ("Microsoft.SqlServer.Management.Smo.Backup");           
                $backup.Action = "Log";           
                $backup.Database = $db.Name;           
                $backup.Devices.AddDevice($Dest + $db.Name + "_log_" + $timestamp + ".trn", "File");           
                $backup.BackupSetDescription = "Log backup of " + $db.Name + " " + $timestamp;           
                #Specify that the log must be truncated after the backup is complete.           
                $backup.LogTruncation = "Truncate";
                # Starting log backup process           
                $backup.SqlBackup($srv);           
            };           
    };
};           
Write-Output ("Finished at: " + (Get-Date -format  yyyy-MM-dd-HH:mm:ss));
Путём мануалов и манипуляций всё стало проще.
code_language.powershell:
Param([switch]$Log,[switch]$Full);
$Server = ".\ARTZVITSQLSERVER";
$Database = "artzvit";
$Dest = "z:\";
$daysToStoreBackups = 3;

$TimeStamp = Get-Date -format yyyy-MM-dd-HH-mm-ss;

Get-ChildItem "$Dest\$Database\*" |? { $_.lastwritetime -le (Get-Date).AddDays(-$daysToStoreBackups)} |% {Remove-Item $_ -force }
"Removed all previous backups older than $daysToStoreBackups days"

If($Full)
{
    $BackupFile = $Dest + $Database + "\full_" + $TimeStamp + ".bak";
    Write-Output ("Started full backup at: " + (Get-Date -format yyyy-MM-dd-HH:mm:ss));
    Backup-SqlDatabase -ServerInstance $Server -Database $Database -BackupFile $BackupFile
    Write-Output ("Finished at: " + (Get-Date -format  yyyy-MM-dd-HH:mm:ss));
    Exit 0;
}

If($Log)
{
    $BackupFile = $Dest + $Database + "\log_" + $TimeStamp + ".trn";
    Write-Output ("Started truncation journal backup at: " + (Get-Date -format yyyy-MM-dd-HH:mm:ss));
    Backup-SqlDatabase -ServerInstance $Server -Database $Database -BackupFile $BackupFile -BackupAction Log
    Write-Output ("Finished at: " + (Get-Date -format  yyyy-MM-dd-HH:mm:ss));
    Exit 0;
}

Write-Output ("Error! You MUST specify -Full or -Log key! Stopping... ");
 

Insallah

¯\_(ツ)_/¯
🏆
📜
Сообщения
1,450
Реакции
443
Будьте очень осторожны с опечатками в номерах.
<?php echo 0230; выведет не 230, как может показаться, а 152. Потому что посчитает, что это ввод в восьмеричной системе.
 

Insallah

¯\_(ツ)_/¯
🏆
📜
Сообщения
1,450
Реакции
443
Можно проследить, как более-менее ровная структура движка 20-50 обрезалась, когда из привата вырезали локации чтобы отдать порезанный паблик. И как потом люди её насиловали, добавляя кучу id наугад, вперемешку, лишь бы не совпало с тем, что уже есть. :)
Сводил в один файл - поржал. :)
PHP:
private static $roomFileNames = [
        20 => 'city.php',
        21 => 'city.php',
        22 => 'shop.php',
        23 => 'repair.php',
        25 => 'comission.php',
        26 => 'city.php',
        27 => 'post.php',
        29 => 'bank.php',
        30 => 'clan_create.php',
        31 => 'tower.php',
        34 => 'fshop.php',
        37 => 'gotzamok.php',
        50 => 'ashop.php',
        51 => 'city.php',
        61 => 'akadem.php',
        650 => 'ul_clans.php',
        1055 => 'group_arena.php',
        620 => 'enter_cave.php',
        666 => 'jail.php',
        2655 => 'city.php',
        1051 => 'lab_enter.php',
        404 => 'vxod.php',
        2111 => 'city.php',
        402 => 'lab_chaos_enter.php',
        2601 => 'city.php',
        603 => 'aren_of_angels.php',
        660 => 'hostel.php',
        777 => 'obshaga.php',
        401 => 'hell.php',
    ];
 

Bayer

Специалист
⚖️
🏆
📜
Сообщения
688
Реакции
243
Можно проследить, как более-менее ровная структура движка 20-50 обрезалась, когда из привата вырезали локации чтобы отдать порезанный паблик. И как потом люди её насиловали, добавляя кучу id наугад, вперемешку, лишь бы не совпало с тем, что уже есть. :)
Сводил в один файл - поржал. :)
PHP:
private static $roomFileNames = [
        20 => 'city.php',
        21 => 'city.php',
        22 => 'shop.php',
        23 => 'repair.php',
        25 => 'comission.php',
        26 => 'city.php',
        27 => 'post.php',
        29 => 'bank.php',
        30 => 'clan_create.php',
        31 => 'tower.php',
        34 => 'fshop.php',
        37 => 'gotzamok.php',
        50 => 'ashop.php',
        51 => 'city.php',
        61 => 'akadem.php',
        650 => 'ul_clans.php',
        1055 => 'group_arena.php',
        620 => 'enter_cave.php',
        666 => 'jail.php',
        2655 => 'city.php',
        1051 => 'lab_enter.php',
        404 => 'vxod.php',
        2111 => 'city.php',
        402 => 'lab_chaos_enter.php',
        2601 => 'city.php',
        603 => 'aren_of_angels.php',
        660 => 'hostel.php',
        777 => 'obshaga.php',
        401 => 'hell.php',
    ];
Ля, циклы же это основы разве нет?
Из базы подтянул и вывел.

Ну а про scandir какой нибудь я вообще помолчу лучше =) (PHP: scandir - Manual)
И то что можно более понятнее привязать имя локации к файлу тоже не стоит говорить.


Код писали дети в подвалах.
 
Сверху