Sign in to follow this  
Followers 0
DEST

Система префиксов

21 posts in this topic

По заявке пользователя @Drummer1993 выкладываю готовое решение по созданию так называемой системы префиксов. Перейдем сразу к делу. 

Ко всем new: 

//в enum с данными о игроке
prefix[50],

Внимание! Далее, из-за слишком большого числа зависимостей, вместо prefix[playerid] и prefix[params[0]] название своего массива с данными о игроке. Например, у нас это PlayerInfo. Тогда необходимо использовать: 
PlayerInfo[playerid][prefix] и PlayerInfo[params[0]][prefix] соответственно. 
При возникновении трудностей, пишите в ЭТУ тему. 

Ко всем командам: 
 

Спойлер

CMD:setprefix(playerid, params[])
{
	//проверки на статус игрока. Например, на уровень администратора. Если проверок нет, удалите эту строку. 
	if(sscanf(params, "us[50]", params[0], params[1])) return SendClientMessage(playerid, -1, "Введите: /setprefix [playerid] [new prefix]");
	prefix[params[0]] = EOS; 
	strcat(prefix[params[0]], params[1]); 
	SendClientMessage(playerid, -1, !"Вы успешно выдали префикс игроку!");
	return true; 
}

 

В OnPlayerDisconnect <ИЛИ> в OnPlayerConnect: 
 

prefix[playerid] = EOS; 

Вот, собственно, "скелет" системы. Так как все моды разные, белые и красные, вам нужно подстраивать под свой. Необходимо сделать сохранение, а также вывод туда, куда вам нужно. Если не получается сделать это самим, пишите, поможем ;)

 

 

Share this post


Link to post
Share on other sites

Спасибо, сейчас попробую ) 

Share this post


Link to post
Share on other sites

Все получилось огромное спасибо )))))) 

Заметка от RASTAMAN , создано

можно поблагодарить автора +

Share this post


Link to post
Share on other sites

Спасибо,сейчас опробую!

Edited by Максимкин

Share this post


Link to post
Share on other sites

Помогите установить , просто новичок.

Share this post


Link to post
Share on other sites

@KRESTOVSKIY что не получается? 

Share this post


Link to post
Share on other sites

@DEST Я вообще не понял как устанавливать.

Я не много разбираюсь в PAWNO , но тут реально не понятно.

Share this post


Link to post
Share on other sites

@KRESTOVSKIY ну если вы разбираетесь только на уровне открыть программу и нажать F5, то этого недостаточно. Если у вас будет какой-то конкретный вопрос, обращайтесь в соответствующий раздел. Если хотите чтобы все сделали за вас, то вам сюда: https://pawno-rus.ru/freelancers/zapisi 

Share this post


Link to post
Share on other sites

У меня похожая команда есть в моде. Только мне ещё нужен выбор цвета префикса. Если скину код команды - подскажите?

Edited by Камерончик

Share this post


Link to post
Share on other sites

@Камерончик Разве могут быть сомненья? Задавайте вопрос в спец. разделе. 

Share this post


Link to post
Share on other sites

Скелет моей системы, только чутка переделанный :D

Share this post


Link to post
Share on other sites

Здравствуйте , у меня выскакивают ошибки C:

Спойлер

\Users\1\Desktop\Èëüÿ è Ëåøà\SERVERS\Full RP\project\gamemodes\NVE-GM.pwn(28942) : error 028: invalid subscript (not an array or too many subscripts): "prefix"
C:\Users\1\Desktop\Èëüÿ è Ëåøà\SERVERS\Full RP\project\gamemodes\NVE-GM.pwn(28942) : warning 215: expression has no effect
C:\Users\1\Desktop\Èëüÿ è Ëåøà\SERVERS\Full RP\project\gamemodes\NVE-GM.pwn(28942) : error 001: expected token: ";", but found "]"
C:\Users\1\Desktop\Èëüÿ è Ëåøà\SERVERS\Full RP\project\gamemodes\NVE-GM.pwn(28942) : error 029: invalid expression, assumed zero
C:\Users\1\Desktop\Èëüÿ è Ëåøà\SERVERS\Full RP\project\gamemodes\NVE-GM.pwn(28942) : fatal error 107: too many error messages on one line

Спойлер

 

CMD:o(playerid, params[])
{
    if(IsAdmin(playerid, 3)) return 1;
    if(sscanf(params, "s[140]", params[0])) return SCM(playerid, COLOR_WHITE, "Èñïîëüçóéòå: /o [òåêñò]");
       format:str_cmd( "Àäìèíèñòðàòîð %s: %s",pInfo[playerid][prefix], params[0]);
    SendClientMessageToAll(COLOR_YELLOW,str_cmd);
    return 1;
}

CMD:setprefix(playerid, params[])
{
    if(IsAdmin(playerid, 7)) return 1;
    if(sscanf(params, "us[50]", params[0], params[1])) return SendClientMessage(playerid, -1, "Use: /setprefix [playerid] [new prefix]");
    if( !IsPlayerLogged( params[0] ) ) return SCM( playerid, COLOR_DARK_GRAY, !INCORRECT_PLAYER_ID );
    prefix[params[0]] = EOS;
    strcat(prefix[params[0]], params[1]);
    SendClientMessage(playerid, -1, !"Prefix given!");
    return true;
}

 

 

помогите , что делать?

Edited by DEST

Share this post


Link to post
Share on other sites

@FernandoW 

21 час назад, FernandoW сказал:

prefix[params[0]]

нужно заменить на 

21 час назад, FernandoW сказал:

pInfo[params[0]][prefix]

как это сделано у вас раньше

Share this post


Link to post
Share on other sites
1 час назад, DEST сказал:

@FernandoW 

нужно заменить на 

как это сделано у вас раньше

В какой строчке именно это заменить?

Share this post


Link to post
Share on other sites

@FernandoW в которой это написано, в команде setprefix. Какая она у вас в моде я не знаю, Вы не пометили строчки, в которых ошибки. 

Share this post


Link to post
Share on other sites
2 часа назад, DEST сказал:

@FernandoW в которой это написано, в команде setprefix. Какая она у вас в моде я не знаю, Вы не пометили строчки, в которых ошибки. 

Спойлер

CMD:o(playerid, params[])
{
    if(IsAdmin(playerid, 3)) return 1;
    if(sscanf(params, "s[140]", params[0])) return SCM(playerid, COLOR_WHITE, "Èñïîëüçóéòå: /o [òåêñò]");
       format:str_cmd( "Àäìèíèñòðàòîð %s: %s",pInfo[playerid][prefix], params[0]);
    SendClientMessageToAll(COLOR_YELLOW,str_cmd);
    return 1;
}

CMD:setprefix(playerid, params[])
{
    if(IsAdmin(playerid, 7)) return 1;
    if(sscanf(params, "us[50]", params[0], params[1])) return SendClientMessage(playerid, -1, "Use: /setprefix [playerid] [new prefix]");
    if( !IsPlayerLogged( params[0] ) ) return SCM( playerid, COLOR_DARK_GRAY, !INCORRECT_PLAYER_ID );
    prefix[params[0]] = EOS;     ТУТ ОШИБКА
    strcat(prefix[params[0]], params[1]);       И ТУТ
    SendClientMessage(playerid, -1, !"Prefix given!");
    return true;
}

 

 

Edited by DEST

Заметка от DEST , создано

3.2. Код больше 10 строк необходимо брать в теги "Код" и "Спойлер". Как это сделать рассказано в разделе "FAQ".

Устное предупреждение.

Share this post


Link to post
Share on other sites

@FernandoW вот в этих строчках и замените

Share this post


Link to post
Share on other sites
1 минуту назад, DEST сказал:

@FernandoW вот в этих строчках и замените

Заменил , на сервере пишу в /o , пишет "Администратор : И тут текст. Префикс не пишется

Edited by FernandoW

Share this post


Link to post
Share on other sites

В конце темы и указано, что это только скелет системы, нужно еще дорабатывать под лично свой мод, т.к. в SAMP практически все моды сделаны в виде одного файла без возможности подключения изолированных друг от друга модулей. 

В 23.10.2017 в 21:30, DEST сказал:

Необходимо сделать сохранение, а также вывод туда, куда вам нужно.

@FernandoW 

Share this post


Link to post
Share on other sites

@DEST, люди не хотят думать. Привыкли, что всё всегда за них делают. Это не как раньше, пытались на основе чего-то сделать сами.

Заметка от DEST , создано

2.17. Запрещено флудить, оффтопить, заниматься флеймом. 

Устное предупреждение.

Share this post


Link to post
Share on other sites

Помогите умоляю:
 

:\EGOR\23\mod\1\gamemodes\new.pwn(4046) : error 028: invalid subscript (not an array or too many subscripts): "prefix"
D:\EGOR\23\mod\1\gamemodes\new.pwn(4046) : warning 215: expression has no effect
D:\EGOR\23\mod\1\gamemodes\new.pwn(4046) : error 001: expected token: ";", but found "]"
D:\EGOR\23\mod\1\gamemodes\new.pwn(4046) : error 029: invalid expression, assumed zero
D:\EGOR\23\mod\1\gamemodes\new.pwn(4046) : fatal error 107: too many error messages on one line

Compilation aborted.

Pawn compiler 3.10.4              Copyright (c) 1997-2006, ITB CompuPhase


4 Errors.

Строка:prefix[playerid] = EOS;

Share this post


Link to post
Share on other sites

Your content will need to be approved by a moderator

Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   You have pasted content with formatting.   Remove formatting

  Only 75 emoticons maximum are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

Loading...
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • odosenok
      By odosenok
      Уже давно на просторах интернета летает эксплоит от SA:MP 0.3e. Он позволял выполнить любой код на ассемблере на удаленной машине (сторона игрока, клиент). Однако, выполнять можно было этот код с некоторыми оговорками: 
      В коде надо было избегать нулей (так как экплоит был строкой для TD) В конце исполнения кода возвращения из стека не происходило (игра завершалась ошибкой).  
      Поскольку CR основана на версии 0.3e, эксплоит работает и на ней. Игра в этом варианте немного защищена adapt.dll (закрыта возможность хуков) и изменен gta_sa.exe (в код внесены 1024 байта неизвестной природы). Я был очень удивлен, что за все время существования такой дыры, ее никто толком не использовал
       
      Эксплоит в моем исполнении немного доведен до ума. Что есть на данный момент? Эксплоит, выполнясь на стороне клиента, выполняет следующие действия:
      Открывает потоковый сокет, скачивает с сервера .dll, загружает ее в память игры Если в процессе этого происходит какая либо ошибка игра закрывается Если все прошло успешно, игра продолжает работать, а выполненый код (сам эксплоит) выгружается  
      Что сейчас умеет загружаемая .dll?
      Взятие аппаратных ключей через утилиту "wmic". Полный доступ к адресному пространству процесса (можно модифицировать игру изнутри). Доступ к машине на уровне прав выполнения игры (скачивание/загрузка файлов)  
      Так как все три выше изложенных пункта включают в себя доступ к компьютеру, перед каким либо вмешательством поступает запрос на одобрение действий. В моем варианте запрашивается доступ к процессу и к папке с игрой
      Что уже есть на базе этого всего? 
      Контроль и модификация пакетов RakNet в обе стороны. Возможность общаться между клиентом и сервером текстом в моде на сервере, например, PluginSend(playerid, "$set_gravity 0.6"), или что-то такое. Главное - понимание, что функция выполнения этой строки будет заложена в .dll. В данный момент через $fullinfo можно получить данные о процессоре, видеокарте, материнской плате, всех носителях и другом установленном оборудовании. Система аккаунтов, наказаний и персонажей. При заходе игрока сервер уже знает, кто присоединился, и, однозначно идентифицируя игрока, проверяет его наказания, выдает ему список персонажей (пресетов скин, цвет, ник, статистика) для игры. Конфигуратор оружейных настроек. Позволяет менять дамаг, точность, магазин, анимации, разброс, скорость стрельбы, ношение одного или двух орудий. Конфигуратор палитры цветов транспорта. Позволяет манипулировать всеми слотами цветов транспорта, делать переливающиеся или мигающие цвета (в реальном времени) по RGB.  
      Таким образом данный эксплоит представляет собой плагин, способный манипулировать клиентом, причем делается это не через средства самого сервера и Pawn, а напрямую на целевой машине. По сему здесь важно понимать, что уязвимость, позволяющая работать с клиентом напрямую, является очень перспективной.
       
      Все вышеизложенное дает мне надежду на то что, что с игрой GTA Criminal Russia не все кончено, и силами разработчиков можно привнести в нее новых красок, по сему я бы хотел пообщаться с вами и по возможности создать сервер для совместных поделок на базе CR. Так как сама игра в ее текущем варианте умирает, ей нужен либо новый виток развития, либо забвение (чего я не особо хочу).
       
      Всех заинтересовавшихся прошу в личные сообщения @Iku Seiko, telegram @romuwka или discord ikuseiko#0491.
    • sweet
      By sweet
      Хелп,при компиле выдает ошибку C:\Users\PC\Desktop\pawno\pawno\include\objects.inc(1104) : error 029: invalid expression, assumed zero
      Сама строка в которой ошибка:    {-2032.7073,-73.8643,35.2484, -2006.3911,-52.6238,35.2704},
      Закройте тему,проблема решилась сама по себе