Архив за 21.04.2012

DCPU-16 плагин для Geshi

При создании форума для 0x10c.ws не нашёл никакого плагина для подсветки синтаксиса DCPU-16, написал свой. Цвета точь-в-точь как на 0x10co.de, к ним многие уже успели привыкнуть, поэтому так:).

Пример

; Try some basic stuff
      SET A, 0x30      ; 7c01 0030
      SET [0x1000], 0x20       ; 7de1 1000 0020
      SUB A, [0x1000]  ; 7803 1000
      IFN A, 0x10      ; c00d 
      SET PC, crash ; 7dc1 001a [*]
 
; Do a loopy thing
      SET I, 10; a861
      SET A, 0x2000    ; 7c01 2000
:loop SET [0x2000+I], [A]      ; 2161 2000
      SUB I, 1 ; 8463
      IFN I, 0 ; 806d
      SET PC, loop  ; 7dc1 000d [*]
 
; Call a subroutine
      SET X, 0x4       ; 9031
      JSR testsub      ; 7c10 0018 [*]
      SET PC, crash    ; 7dc1 001a [*]
 
:testsub      SHL X, 4 ; 9037
      SET PC, POP      ; 61c1
 
; Hang forever. X should now be 0x40 if everything went right.
:crash     SET PC, crash    ; 7dc1 001a [*]
 
; [*]: Note that these can be one word shorter and one cycle faster by using the short form (0x00-0x1f) of literals,
;      but my assembler doesn't support short form labels yet.

Исходный код плагина

<?php
/*************************************************************************************
 * dcpu-16.php
 * -------
 * Author: Sergey Marochkin (xziggix@gmail.com)
 * Copyright: (c) 2012 Sergey Marochkin (http://ziggi.org/)
 * Special for http://0x10c.ws/
 * Release Version: 1.1.0.0
 * Date Started: 2012/04/21
 *************************************************************************************
 *
 *	 This file is part of GeSHi.
 *
 *   GeSHi is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 *   GeSHi is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with GeSHi; if not, write to the Free Software
 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 ************************************************************************************/
 
$language_data = array (
	'LANG_NAME' => 'DCPU-16',
	'COMMENT_SINGLE' => array(1 => ';'),
	'COMMENT_MULTI' => array(),
	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
	'QUOTEMARKS' => array("'", '"'),
	'ESCAPE_CHAR' => '',
	'KEYWORDS' => array(
		/*CPU*/
		1 => array(
			'set','add','sub','mul','div','mod','shl','shr','and','bor','xor',
			'ifb','ifc','ife','ifn','ifg','ifa','ifb','ifl','ifu',
			'adx','sbx','sti','std','jsr','dat','int','iag','ias','rfi','iaq','hwn','hwq','hwi'
			),
		/*registers*/
		2 => array('a','b','c','x','y','z','i','j' ),
		),
	'SYMBOLS' => array(
		'[', ']', '(', ')'
		),
	'CASE_SENSITIVE' => array(
		GESHI_COMMENTS => false,
		1 => false,
		2 => false,
		3 => false,
		),
	'STYLES' => array(
		'KEYWORDS' => array(
			1 => 'color: #708;',
			2 => 'color: #000;',
			),
		'COMMENTS' => array(
			1 => 'color: #a50;',
			),
		'ESCAPE_CHAR' => array(
			0 => 'color: #000099;'
			),
		'BRACKETS' => array(
			0 => 'color: #000;'
			),
		'STRINGS' => array(
			0 => 'color: #164;'
			),
		'NUMBERS' => array(
			0 => 'color: #164;'
			),
		'METHODS' => array(
			),
		'SYMBOLS' => array(
			0 => 'color: #164;'
			),
		'REGEXPS' => array(
			0 => 'color: #164;'
			),
		'SCRIPT' => array(
			)
		),
	'URLS' => array(
		1 => '',
		2 => '',
		3 => ''
		),
	'OOLANG' => false,
	'OBJECT_SPLITTERS' => array(
		),
	'REGEXPS' => array(
		//Hex numbers
		0 => '0x[0-9a-fA-F]+'
		),
	'STRICT_MODE_APPLIES' => GESHI_NEVER,
	'SCRIPT_DELIMITERS' => array(
		),
	'HIGHLIGHT_STRICT_BLOCK' => array(
		),
	'TAB_WIDTH' => 2
);
 
?>

Pastebin

Для светлого фона
Для тёмного фона

0x10c.ws — русский фан сайт игры 0x10c

Пришла в голову идея о создании русского фан сообщества по игре 0x10c, хорошо, что их ещё не так много, но пришлось поторопиться. За пару дней создал сайт и группу. Скоро будет форум.
Если кому-то интересно поучаствовать — добро пожаловать.
Если вам не интересно, то просто войдите в группу, это поможет развитию:)

Группа в ВКонтакте: http://vk.com/rus_0x10c
Сайт: http://0x10c.ws/

Pawn. Отличный антимат для SA-MP сервера.

Давным давно хотел написать антимат, но так руки и не доходили, пока не попросили функцию на одном форуме. Этот антимат проверяет строку на запрещённые слова, учитывая исключения(оскорблять, например). Найденные плохие слова заменяет на *(сколько в слове символов, столько и звёздочек).

Исходный код функции

stock remove_bad_word(text[])
{
	static words[][32] = {"bla","cyk"};
	static exceptions[][32] = {"vobla", "krabla", "mobla","picyk","mucyk"};
 
	new i, j, k, pos, epos, len, epos_buf;
	for (i = 0; i < sizeof(words); i++)
	{
		while ( (pos = strfind(text, words[i], true, pos+1)) != -1 )
		{
			len = strlen(words[i]);
 
			for (j = 0; j < sizeof(exceptions); j++)
			{
				epos = strfind(text, exceptions[j], true, epos+1);
				if ( epos != pos - (strlen(exceptions[j]) - len) )
				{
					epos = epos_buf;
					if (j == sizeof(exceptions)-1)
					{
						for (k = pos; k < pos+len; k++)
						{
							text[k] = '*';
						}
					}
					continue;
				}
				else
				{
					break;
				}
			}
			epos_buf = epos;
		}
	}
}

Исходник на pastebin.com

Пример использования

public OnPlayerText(playerid, text[])
{
	remove_bad_word(text);
	return 1;
}

deHasher v1.2

— К верхней панели добавилась кнопка «DB info» которая вызывает информационное окно, в котором отображено количество записей в локальной базе данных.
— Добавлен мой jquery плагин, для центрирования окон.
— Структура таблиц изменена, теперь для каждого типа своя таблица, в талице 2 столбика — Hash и Text.
— К API добавлена возможность нахождения количества записей. Подробнее тут.

ВНИМАНИЕ! Те, кто использовал более ранние версии и успел накопить базу данных, предлагаю этот скрипт для адаптации, просто скопируйте его в корень сайта и зайдите в браузере по адресу http://ваш_сайт/имя_скрипта.php

<?php
 
include "config.php";
 
if (!mysql_connect(MySQL_HOSTNAME,MySQL_USER,MySQL_PASSWORD))
{
	echo "MySQL >> Not connected";
	exit;
}
mysql_select_db(MySQL_DB);
mysql_query("SET NAMES utf8");
 
mysql_query("
CREATE TABLE IF NOT EXISTS `deHasher_md5` (
  `Hash` varchar(128) NOT NULL DEFAULT '',
  `Text` varchar(2048) NOT NULL DEFAULT ''
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
CREATE TABLE IF NOT EXISTS `deHasher_md5_md5` (
  `Hash` varchar(128) NOT NULL DEFAULT '',
  `Text` varchar(2048) NOT NULL DEFAULT ''
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
CREATE TABLE IF NOT EXISTS `deHasher_sha1` (
  `Hash` varchar(128) NOT NULL DEFAULT '',
  `Text` varchar(2048) NOT NULL DEFAULT ''
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
");
 
$result = mysql_query("SELECT * FROM `deHasher`");
while (($array = mysql_fetch_assoc($result)) != false)
{
	$type = $array['Type'];
	$hash = $array['Hash'];
	$text = $array['Text'];
	if ($type == "md5(md5())")
	{
		$type = "md5_md5";
	}
	mysql_query("INSERT INTO `deHasher_$type` (`Hash`,`Text`) VALUES ('$hash','$text')");
}
 
mysql_query("DROP TABLE `deHasher`");
 
?>

Живой пример работы: http://hash.ziggi.org/
GIT: https://github.com/ziggi/deHasher

Перейти к верхней панели