shape1
shape2
shape3
shape4
shape7
shape8

Архитектура проекта [No hook]


RASSVET

Новичок
26.01.2020
17
0
0
Доброго времени суток, на связи RASSVET. Сегодня поговорим на такую тему, как : архитектура Вашего проекта. Если же Вы пишите свой мод с нуля, или же хотите более красиво и компактно построить свой код, то Вы по адресу. Не знаю почему, но лично мне не нравится работать с дерективами препроцессора, иначе говоря, с хуками. 

"Но как же тогда мы будем прятать весь наш код в инклудах?" Спросите Вы, но на самом деле всё очень просто. Давайте я покажу пример:

// наш инклуд

CMD:hello(playerid)
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Hello", "1. Hello\n2. World", "okay", "");
return true;
}

stock CMD_OnDialogRepsonse(playerid,dialogid, response,listitem)
{
switch(dialogid)
{
if(response)
{
if(dialogid == 1)
{
case 0: SendClientMessage(playerid, -1, "hello");
case 1: SendClientMessage(playerid, -1, "world");
}
}
}
return true;
}

//Сохраняем с расширением .inc, допустим по пути gamemodes/include

//Наш мод

// Нам нужен паблик OnDialogRepsonse, ищем его.

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
CMD_OnDialogRepsonse(playerid,dialogid, response,listitem); // Название нашего стока в инклуде
return 1;
}

//Конец мода
#include "../gamemodes/include/test.inc"

И теперь в нашем моде, благодаря двум строкам мы имеем функционал на один диалог. Таким способом, мы можем обращаться к любому паблику.

Данный способ научит Вас более бережно и уважительно относится к своему коду. Так же, Вы всегда можете найти именно то, что Вам нужно. Ведь таким образом, Вы имеете возможность в один include помещать целые системы..

Буду рад ответить на Ваши вопросы, задавайте их ниже, с Вами был RASSVET

 
Последнее редактирование модератором: