I'am Legend
Умник
| Автор данной системы: | I'am Legend |
| Помощь: | DeimoS(Спасибо), Saibot(Спасибо) |
| Командный процессор: | DC_CMD | ZCMD | DCMD |
| Хранения Данных: | Mysql R39 X |
[HR]Краткая информация:[/HR]
[HR][/HR]Система подойдет для всех модов, так-же подойдет на разбор новичков этой системы.
Огромное спасибо DeimoS aka Eims, помог мне увидеть ошибку в коде.
Если у вас есть более оптимизированный вариант кидайте его в комментарии, рассмотрим, и добавлю ваш вариант(Если конечно он лучше).
Критика так-же присутствует, только без мата/оскорбления и еще прочего что нарушает правило.
[HR]Особенности:[/HR]
[HR][/HR]- 1.Не имеет не одного PVar'a.
- 2.Не имеет багов.
- 3.У автора данной системы прямые руки.
- 4.Все команды хорошо функционируют.
[HR]1. Создания WARP'a(Команда)[/HR]
[HR][/HR]
PHP:
CMD:setwarp(playerid, params[])
{
if (isnull(params))
return SendClientMessage(playerid,-1,!"Введите:/setwarp [name]");
new
Float:position_x,
Float:position_y,
Float:position_z,
int,
virtual_world;
if(!(1 < strlen(params) < 10))
return SendClientMessage(playerid,-1, !"[X] Названия варпа не может быть больше 10 символов или меньше 1");
GetPlayerPos(playerid, position_x, position_y, position_z);
int = GetPlayerInterior(playerid);
virtual_world = GetPlayerVirtualWorld(playerid);
static const mysql_string[] = "INSERT INTO `warps` (`name_warp`,`position_x`,`position_y`,`position_z`,`int`,`virtual_world`)\
VALUES ('%s','%f','%f','%f','%d','%d')";
new string[sizeof(mysql_string)-14+11+9+9+9+2*2];
format(string, sizeof(string), mysql_string, params, position_x, position_y, position_z, int, virtual_world);
mysql_function_query(connect,string,false,"","");
return 1;
}
Все варп успешно создан и занесен в нашу базу данных, проверку на админку я не ставил, если вам нужно воткните сами.
[HR]2.Сам телепорт по нашему WARP'y(Команда)[/HR]
[HR][/HR]
PHP:
CMD:warp(playerid, params[])
{
if (isnull(params))
return SendClientMessage(playerid,-1, !"Введите:/warp [name]");
if(!(1 < strlen(params) < 10))
return SendClientMessage(playerid,-1, !"[X] Названия варпа не может быть больше 10 символов или меньше 1");
static const fmt_str[] = "SELECT * FROM `warps` WHERE `name_warp` = '%s'";
new string[sizeof(fmt_str)-2+11];
format(string, sizeof(string), fmt_str, params);
mysql_function_query(connect,string,true,!"LoadWarpName","ds",playerid,params);
return 1;
}
PHP:
forward LoadWarpName(playerid, warp[]);
public LoadWarpName(playerid, warp[])
{
if(!cache_get_row_count(connect))
return SendClientMessage(playerid, -1, "Такого WARP'a не существует.(Используйте /warps -> Warp List)");
new
fmt_str[33-2+10+3],
Float:position_x = cache_get_field_content_float(0, "position_x", connect),
Float:position_y = cache_get_field_content_float(0, "position_y", connect),
Float:position_z = cache_get_field_content_float(0, "position_z", connect),
interior = cache_get_field_content_int(0, "int", connect),
virtual_world = cache_get_field_content_int(0, "virtual_world", connect);
printf("position_x: %f, position_y: %f, position_z: %f, interior: %d, virtual_world: %d", position_x, position_y, position_z, interior, virtual_world);
SetPlayerPos(playerid, position_x, position_y, position_z);
SetPlayerInterior(playerid, interior);
SetPlayerVirtualWorld(playerid, virtual_world);
format(fmt_str, sizeof(fmt_str), "Вы были телепортированы на варп [%s]", warp);
SendClientMessage(playerid, -1, fmt_str);
return 1;
}
Все телепорт успешно выполняется , вся система проверена, так-же я залогировал все действия.
[HR]3.Теперь удалим наш WARP (Команда)[/HR]
[HR][/HR]
PHP:
CMD:deletewarp(playerid, params[])
{
if (isnull(params))
return SendClientMessage(playerid,-1, !"Введите:/deletewarp [name]");
if(!(1 < strlen(params) < 10))
return SendClientMessage(playerid,-1, !"[X] Названия варпа не может быть больше 10 символов или меньше 1");
static const mysql_fmt[] = "DELETE FROM `warps` WHERE `name_warp` = '%s'";
new string[sizeof(mysql_fmt)-4+25];
format(string, sizeof string, mysql_fmt, params);
mysql_function_query(connect,string,false,"","");
return 1;
}
Все удаления наше успешно выполнено, еще раз повторю все системы проверены, и работают.
[HR]Посмотреть список варпов(команда):[/HR]
[HR][/HR]К глобальным переменным
PHP:
const WARP_LIST = 900;
const MAX_WARP_NAME = 10;
PHP:
CMD:warplist(playerid)
{
mysql_function_query(connect, "SELECT * FROM `warps`", true, "@_WarpList", "i", playerid);
return true;
}
PHP:
case WARP_LIST:
{
if(!response)return true;
static const fmt_str[] = "SELECT * FROM `warps` WHERE `name_warp` = '%s'";
new string[sizeof(fmt_str)-2+MAX_WARP_NAME];
format(string, sizeof(string), fmt_str, inputtext);
mysql_function_query(connect,string,true,"LoadWarpName","ds",playerid,inputtext);
}
PHP:
@_WarpList(playerid);
@_WarpList(playerid)
{
new rows, fields;
cache_get_data(rows, fields);
if(!rows)
return SendClientMessage(playerid, -1, !"Созданных Варпов не найдено!");
const MAX_WARP = 50;
new name_warp[MAX_WARP_NAME],
str_fmt[MAX_WARP_NAME*MAX_WARP];
for(new i = 0; i < rows; i++)
{
cache_get_field_content(i,"name_warp", name_warp);
format(str_fmt, sizeof(str_fmt), "%s%s\n",str_fmt, name_warp);
}
ShowPlayerDialog(playerid,WARP_LIST,DIALOG_STYLE_LIST,!"WarpList",str_fmt,!"Выбрать",!"Выход");
return true;
}
Теперь в команде /warplist вы сможете посмотреть созданные варпы, а так же выбрать любой из них и сразу телепортироваться.
Огромное спасибо Saibot!!
[HR][/HR]
[HR][/HR]
При копировании на другие порталы указывайте обязательно автора!
Если увидели ошибку/или еще что пиши в комментарии, все обсудим.
[HR]Контакты:[/HR]
[HR][/HR]Если увидели ошибку/или еще что пиши в комментарии, все обсудим.
[HR]Контакты:[/HR]
Skype: adminpgrp
VK: vk.com/dislikex
VK: vk.com/dislikex
Последнее редактирование:
