PDA

Просмотр полной версии : [RP] Less Global-Rp v2.2 [NEW EDITION]



Vano_Glad
22.09.2015, 13:53
Delete

Kurbanoff
22.09.2015, 14:59
Скрин )

Vano_Glad
22.09.2015, 16:12
Kurbanoff

Вам скрин чего?

Osetin
22.09.2015, 19:22
Теперь каждый раз новую тему будете создавать? Можно нажать кнопку ''Редактировать'', и отредактировать старую тему.

Kurbanoff
22.09.2015, 21:01
Хотел бы увидеть скрины вашего сервера , где уникальные системы или красота :good:

Vano_Glad
23.09.2015, 01:38
Osetin

Новую тему? Она единственная

Desulaid
24.09.2015, 19:34
Запрещено выкладывать моды, сделанные на основе RLS. (Shitcode lovers - go hack yourself).

Vano_Glad
25.09.2015, 03:34
Zangetsu

RLS? :sarcastic: Уважаемый, где вы тут увидели RLS?

gangzone.ini
25.09.2015, 08:25
Zangetsu

RLS? :sarcastic: Уважаемый, где вы тут увидели RLS?

Вы свой пост читали или вдумывались в то, что пишите?

Приветствую всех! С вами снова Vano_Glad со своей новой версией мода Less Global-RP v2.2 [NEW EDITION]. Мод будет разрабатываться дальше и улучшаться в лучшую сторону. Скоро о старом и назойливом RLS вы сможете забыть!

Vano_Glad
25.09.2015, 12:58
gangzone.ini

Уважаемый, вы не поняли просто смысла этого сообщения :) Если не знакомы с предыдущими версиями, то лучше просто ничего не пишите

gangzone.ini
25.09.2015, 13:45
gangzone.ini

Уважаемый, вы не поняли просто смысла этого сообщения :) Если не знакомы с предыдущими версиями, то лучше просто ничего не пишите

В первой теме Вы писала о продаже переделке Less Global, а как мы знаем это RLS, так что пoпрошу старшую администрацию удалить тему, т.к основа мода RLS.

Desulaid
25.09.2015, 15:25
"Улучшенный" мод на основе RLS? :lol:

Vano_Glad
25.09.2015, 16:17
gangzone.ini

Уважаемый, включите свои мозги, скачайте мод и протестируйте его. И не несите такую ересь, насчет того, что данный мод - RLS.

Zangetsu

Это не RLS :facepalm:

Daniel_Cortez
25.09.2015, 18:38
Проверил - да, это не RLS. Но при взгляде на код всё равно возникает какое-то ощущение дежавю.

Например, часть макросов и переменных написана на транслите:


#define COLOR_SERYI 0xE6E6E6E6
#define COLOR_OTVET 0x83F9C8AA
#define COLOR_ALMAZ 0x00FFD5AA
#define MOROZ(%0) TogglePlayerControllable(playerid, %0);
new bool: akk[MAX_PLAYERS];
new bool: Dostup[MAX_PLAYERS];
new bool: Popitka[MAX_PLAYERS];



Одни переменные названы с маленькой буквы, другие - с большой. Определитесь уже.


new Menu: bomj[2];
new SelectCharPlace[MAX_PLAYERS];
new Parol[MAX_PLAYERS];
new TimerAkk[MAX_PLAYERS];
new arendascooter[MAX_PLAYERS];



Также в половине макросов не нужно ставить скобки и точку с запятой после функции - так макросы функций не делаются.
Такого даже в RLS не было.


#define com if(Login[playerid] == false) return SCM(playerid, COLOR_GREY, "Необходимо авторизоваться!");
#define flood if(AntiFlood[playerid] > gettime()) return SCM(playerid, COLOR_RED, "Не флуди!"); AntiFlood[playerid] = gettime()+1;
#define ESCM SCM(playerid, COLOR_GREY, "Вы не уполномочены использовать эту команду!");
#define ISCM SCM(playerid, COLOR_GREY, "Игрок не найден!");
#define LSCM SCM(playerid, COLOR_GREY, "Игрок не авторизовался!");

Кроме того, часть макросов названа в верхнем регистре, часть - в нижнем. Опять же, отсутствие каких-либо вменяемых стандартов.


И... иногда есть некоторые вещи невозможно объяснить словами:


#define Kickk SetTimerEx("kick", 20, false, "i", playerid);
#define publics%0(%1) forward%0(%1); public%0(%1)



Едем дальше.


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new string[1400];

Это такая неудачная шутка, да?




new scooter;

Как думаете, что это? Переменная, в которую записывается ID какого-то скутера?


stock Pickups()
{
scooter = CreatePickup(19134, 23, 1160.5629,-1771.9706,16.5938);
}

Да нифига подобного - это ID пикапа. Естественно, нельзя узнать об этом, не обыскав весь мод.




format(src,sizeof(src),"`Pass` = '%s'",Player[i][pPass]);

Шаг 1: Зарегистрироваться с паролем "a';DROP TABLE `accounts`;--" (без кавычек).
Шаг 2: ...
Шаг 3: PROFIT.



В общем, назвать это "RLS" нельзя. Скорее, "new.pwn со всеми ужасами кодинга, перенесёнными из RLS на новый мод".
В текущем виде для обучения скриптингу не годится. Я бы упомянул о Правилах раздела (http://pro-pawn.ru/showthread.php?9065), но, по-моему, тут уже нет смысла.

Desulaid
25.09.2015, 18:47
А ведь этот мод хотели продавать (http://pro-pawn.ru/showthread.php?12677-Less-Global-Rp-v2-2-NEW-EDITION) :declare:

Vano_Glad
25.09.2015, 19:24
Daniel_Cortez

Уважаемый Daniel_Cortez, нисколько не сомневаюсь в ваших знаниях по pawn, но давайте по-порядку.

1. Переменные называю как хочу - моё право. Неважно, как они названы, от того, что я поменяю имена этим переменным, мод работать лучше не станет.
2. Насчёт new string[1400]; Что тут не так? Насколько мне известно, чтобы уместить огромный текст в диалоге, по другому не сделать.
3. Многое вами сказанное делает вывод о том, что вам просто уже не к чему придраться, и вы начинаете придираться к мелочам, которые на работоспособность мода не повлияют.

Делаем итог: Я НЕ считаю это "нубо-кодингом". Из RLS ничего не было перенесено, разве что только принцип оформления и названия некоторых переменных. И в этом нет ничего плохого

gangzone.ini
25.09.2015, 20:16
Daniel_Cortez

Уважаемый Daniel_Cortez, нисколько не сомневаюсь в ваших знаниях по pawn, но давайте по-порядку.

1. Переменные называю как хочу - моё право. Неважно, как они названы, от того, что я поменяю имена этим переменным, мод работать лучше не станет.
2. Насчёт new string[1400]; Что тут не так? Насколько мне известно, чтобы уместить огромный текст в диалоге, по другому не сделать.
3. Многое вами сказанное делает вывод о том, что вам просто уже не к чему придраться, и вы начинаете придираться к мелочам, которые на работоспособность мода не повлияют.

Делаем итог: Я НЕ считаю это "нубо-кодингом". Из RLS ничего не было перенесено, разве что только принцип оформления и названия некоторых переменных. И в этом нет ничего плохого

На g-i оценят наверное мод, но это не g-i, о каких придирках идёт речь? Все правельно DC написал.

Daniel_Cortez
25.09.2015, 21:35
1. Переменные называю как хочу - моё право. Неважно, как они названы, от того, что я поменяю имена этим переменным, мод работать лучше не станет.
[сарказм]Правильно, а читаемость кода и простота сопровождения - это так, мелочи...[/сарказм]



2. Насчёт new string[1400]; Что тут не так? Насколько мне известно, чтобы уместить огромный текст в диалоге, по другому не сделать
Вы про этот, что ли?


f("%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", Pravila[0],Pravila[1],Pravila[2],Pravila[3],Pravila[4],Pravila[5],Pravila[6],Pravila[7],Pravila[8],Pravila[9],Pravila[10],Pravila[11],Pravila[12],Pravila[13],Pravila[14],Pravila[15],Pravila[16],Pravila[17],Pravila[18]);

К вам встречный вопрос: а зачем форматировать этот текст при каждом вызове? Содержимое строк как-то изменяется между показами диалога?



Насколько мне известно, чтобы уместить огромный текст в диалоге, по другому не сделать
Достаточно объявить массив string отдельно в каждой ветке case и адекватно рассчитать его размер, исходя из ситуации.
Касаемо диалога с правилами: http://pro-pawn.ru/showthread.php?10012
В вашем случае нужно один раз (именно один раз, а не перед каждым показом диалога - в OnGameModeInit, например) пройтись циклом по массиву строк (от 0-го до предпоследнего элемента) и заменить символы конца строки ('\0') на перенос строки ('\n').



3. Многое вами сказанное делает вывод о том, что вам просто уже не к чему придраться, и вы начинаете придираться к мелочам, которые на работоспособность мода не повлияют.
Как я уже сказал, важна не только работоспособность. Пора бы уже понять это.
В подтверждение приведу цитату Мартина Фаулера (https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D1%83%D0%BB%D0%B5%D1%80,_%D0%9C%D0%B0%D1%80%D1%82%D0%B8%D0%BD):

Любой дурак может написать программу, которую поймёт компилятор. Хорошие программисты пишут программы, которые смогут понять другие программисты.



Из RLS ничего не было перенесено, разве что только принцип оформления и названия некоторых переменных.
Об этом и была речь.



Делаем итог: Я НЕ считаю это "нубо-кодингом".

И в этом нет ничего плохого
Считайте, как хотите, ваше право. Только не называйте себя после этого скриптером.
И уж тем более, не стоит выкладывать подобные поделия на всеобщее обозрение (ну разве что если вы захотите заработать + в репутацию на g-i - там и без того целая свалка говнокода). Из вашего кода новички ничему хорошему не научатся и только зря потеряют время.

Desulaid
25.09.2015, 21:53
Решил посмотреть "ненубовский" код.


stock Register(i, passkey[])
{
new string[1400];
strmid(Player[i][pPass],passkey, 0, strlen(passkey), 20);
f("%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", Pravila[0],Pravila[1],Pravila[2],Pravila[3],Pravila[4],Pravila[5],Pravila[6],Pravila[7],Pravila[8],Pravila[9],Pravila[10],Pravila[11],Pravila[12],Pravila[13],Pravila[14],Pravila[15],Pravila[16],Pravila[17],Pravila[18]);
SPD(i, 2, DSM, "Правила сервера", string, "Далее", "Назад");
}

Яндекс плохого не подскажет

https://pp.vk.me/c629321/v629321894/12e97/5sLsAQTcpBQ.jpg


https://pp.vk.me/c629321/v629321894/12e8e/_Ohi1Ogbw_U.jpg

:sorry:

Vano_Glad
26.09.2015, 03:59
gangzone.ini

Не всё

Daniel_Cortez

Насчёт читаемости кода: Начнём с того, что в первую очередь код должен понимать, как я минимум. Пишу я его в первую очередь для себя, а не для других. Начиналась моя жизнь в pawn с мода RLS. Я привык к нему, к его оформлению, и поэтому использую я именно его. Мне так проще, для меня этот код более читаем, и здесь нет ничего плохого. Другие люди так же просто понимают этот код, поэтому здесь вы не до конца правы.

Насчёт string недопонял вас. Если вы меня в чём-то упрекаете, мол я никчемный в pawn, так наоборот бы помогли сами.

Если сравнивать ВСЕ, подчеркиваю ВСЕ паблик моды (хорошие и плохие), то мой их код с моим и рядом не стоит, если я ошибаюсь, то покажите хотя бы 2-3 мода с кодом в целом, который был бы лучше моего.

Zangetsu

Ну извините! Писал мод на скорую руку, ему ещё и недели нет. И вы снова начинаете придираться к мелочам, чтобы (как я считаю) тупо набить себе посты

Desulaid
26.09.2015, 08:02
Ну нужно же как-то развиваться, да и зачем вам такие директивы? Что вы на них возлагаете? Да и везде практически точка с запятой. Зачем?? Стоит такая в команда adm и ты такой - «wtf? Что это? Зачем? Удалю ка я это гавно и сделаю по своему!» :good2:


#define f( format(string, sizeof(string),
#define GN(%1) Player[%1][pName]
#define Kickk SetTimerEx("kick", 20, false, "i", playerid);
#define publics%0(%1) forward%0(%1); public%0(%1)
#define MOROZ(%0) TogglePlayerControllable(playerid, %0);
#define com if(Login[playerid] == false) return SCM(playerid, COLOR_GREY, "Необходимо авторизоваться!");
#define flood if(AntiFlood[playerid] > gettime()) return SCM(playerid, COLOR_RED, "Не флуди!"); AntiFlood[playerid] = gettime()+1;
#define ESCM SCM(playerid, COLOR_GREY, "Вы не уполномочены использовать эту команду!");
#define ISCM SCM(playerid, COLOR_GREY, "Игрок не найден!");
#define LSCM SCM(playerid, COLOR_GREY, "Игрок не авторизовался!");
#define adm if(Player[playerid][pAdmin] > 0 && Dostup[playerid] == false) return SPD(playerid, 11, DSI, "Админ-авторизация", "{FFFFFF}Для авторизации в админ-панель\nвведите свой админ-пароль:", "Далее", "Выход");


Я и сам не прочь что-то перенести на define



// к примеру

#define function%1(%2) \
forward %1(%2); public %1(%2)

#define Format(%1,%2,%3) \
(format(%1,sizeof(%1),%2,%3))

#define SendFormatMessage(%0,%1,%2,%3,%4) \
format(%1,sizeof(%1),%3,%4), SendClientMessage(%0,%2,%1)

#define SendFormatMessageToAll(%0,%1,%2,%3) \
format(%0,sizeof(%0),%2,%3), SendClientMessageToAll(%1,%0)


Просто так писать код проще, ну для меня, да и использование такого ничем вас не затруднит. Но от части это и есть говнокод, но я без этого уже не могу))0)

Vano_Glad
26.09.2015, 08:55
Zangetsu

Если честно, то я не понял смысл вашего сообщения

gangzone.ini
26.09.2015, 13:39
Насчёт читаемости кода: Начнём с того, что в первую очередь код должен понимать, как я минимум. Пишу я его в первую очередь для себя, а не для других.
Зачем тогда выкладывать в общий доступ?! Повторяюсь, на g-i выложили бы, может Вас похвалили бы, но не тут, о каком набивании идёт речь? Это обычная критика, и она не запрещена правилами Pro-Pawn.Ru. Если выкладываете мод, ждите отрицательной критики, как в нашем случае.

Vano_Glad
26.09.2015, 13:59
gangzone.ini

Я ожидал отрицательной критики, но не: тупой, неаргументированный и бессмысленной... И я не жду никакой похвалы

Desulaid
26.09.2015, 14:33
gangzone.ini

Я ожидал отрицательной критики, но не: тупой, неаргументированный и бессмысленной... И я не жду никакой похвалы

То есть, ваш код можно считать хорошим? :russian_roulette:

gangzone.ini
26.09.2015, 14:40
gangzone.ini

Я ожидал отрицательной критики, но не: тупой, неаргументированный и бессмысленной... И я не жду никакой похвалы

Обоснуйте поэалуйста данные высказывание, пожалуйста.
Неаргументированные? - привели 2 человека, Daniel_Cortez, Zangetsu аргументы того, что ваш код - не код.
Тупой ? - в чем он тупой? В том что правду пишут?
Бессмысленный? - В чем же? В том что Вам глаза открывают?

Daniel_Cortez
26.09.2015, 15:07
Другие люди так же просто понимают этот код, поэтому здесь вы не до конца правы.
Вы не учли только одного: здесь не g-i и за переменные на транслите и отсутствие стандартов вас здесь по голове никто не погладит.



Насчёт string недопонял вас.
Возможно, будет понятнее из примера кода.


#include <a_samp>

// строки,
new long_text[4][8] =
{
{"строка1"},
{"строка2"},
{"строка3"},
{"строка4"}
};

public OnGameModeInit()
{
for (new i=0, j; i < sizeof(long_text) - 1; ++i) // от 1 до 3 строки
for (j = 0; j < sizeof(long_text[]); ++j) // перебираем каждый символ в строке
if(long_text[i][j] == '\0') // если это символ конца строки - ...
{
long_text[i][j] = '\n'; // ... заменяем его на символ переноса
break;
}
// после этого строки будут "сцеплены" в одну, остаётся только проверить получившийся результат
print(long_text[0]); // обращение к строке происходит не как к "long_text", а как к "long_text[0]"
}




Если вы меня в чём-то упрекаете, мол я никчемный в pawn, так наоборот бы помогли сами.
Помочь? В плане чего?
Касаемо той строки для диалога - я привёл пример кода выше. Надеюсь, для вас не составит труда разобраться и адаптировать свой случай с диалогом.
По поводу всего остального - проще будет переписать мод с 0, чем пытаться исправить ваш код. Естественно, я этим заниматься не собираюсь.
Многие рекомендации по скриптингу я собрал в одной теме. Здесь и стиль кодинга, и разъяснение некоторых распространённых ошибок.



И вы снова начинаете придираться к мелочам, чтобы (как я считаю) тупо набить себе посты
За себя могу сказать, что если б я хотел набить себе посты, я мог бы просто отредактировать их кол-во через настройки в админ-меню. Тем не менее, у меня в статистике не миллион постов, а всего лишь 600 с лишним, и это очень просто объясняется давностью регистрации и активностью на портале.
По поводу остальных участников форума - обоснуйте.

Vano_Glad
26.09.2015, 16:35
Daniel_Cortez

Если я вас правильно понял, то к примеру в:

#define ESCM SCM(playerid, COLOR_GREY, "Вы не уполномочены использовать эту команду!");
#define ISCM SCM(playerid, COLOR_GREY, "Игрок не найден!");
#define LSCM SCM(playerid, COLOR_GREY, "Игрок не авторизовался!");

Точка с запятой и скобки не требуются. Я решил проверить. Удалил просто одну точку с запятой и мод выдал ошибку на отсутствие этого знака препинания

#Vito
26.09.2015, 18:39
Daniel_Cortez

Если я вас правильно понял, то к примеру в:

#define ESCM SCM(playerid, COLOR_GREY, "Вы не уполномочены использовать эту команду!");
#define ISCM SCM(playerid, COLOR_GREY, "Игрок не найден!");
#define LSCM SCM(playerid, COLOR_GREY, "Игрок не авторизовался!");

Точка с запятой и скобки не требуются. Я решил проверить. Удалил просто одну точку с запятой и мод выдал ошибку на отсутствие этого знака препинания
Потому что, теперь нужно ставить точку с запятой при использовании.

public OnPlayerConnect(playerid)
{
ISCM;
return 1;
}

Vano_Glad
26.09.2015, 18:43
#Vito

И в чём же тогда разница моего варианта и этого?

Daniel_Cortez
29.09.2015, 15:53
Daniel_Cortez

Если я вас правильно понял, то к примеру в:

#define ESCM SCM(playerid, COLOR_GREY, "Вы не уполномочены использовать эту команду!");
#define ISCM SCM(playerid, COLOR_GREY, "Игрок не найден!");
#define LSCM SCM(playerid, COLOR_GREY, "Игрок не авторизовался!");

Точка с запятой и скобки не требуются. Я решил проверить. Удалил просто одну точку с запятой и мод выдал ошибку на отсутствие этого знака препинания
Во-первых, большими буквами обычно называют константы. Примеры: MAX_PLAYERS, MAX_VEHICLES, MAX_PLAYER_NAME (на самом деле это макросы, но они маскируются именно под константы, а не под функции, а потому и правила задания имён те же, что и у констант).

Во-вторых, если "SCM" - это сокращение от "SendClientMessage", то что означают "ESCM", "ISCM" и "LSCM"? Что означают первые буквы в этих названиях? Только не говорите, что это просто рандомные буквы.

В-третьих, вы делаете макросы непохожими на обычный код на Pawn.
Макросы должны быть похожими на настоящие функции. Например, так:

LSCM();
Но ни в коем случае не вот так:

LSCM
Такой код приведёт читателя в замешательство, если он не знаком с вашими заморочками.
И не стоит забывать о том, что названия должны быть в первую очередь понятными.
Вы когда-нибудь видели, чтобы у функций SA:MP вместо нормальных названий были аббревиатуры? (HTTP в счёт не брать, эта аббревиатура достаточно широко известна, gpci - тоже, куй явно не задумывался над названием, всё равно функция скрытая)
Поэтому в случае с LSCM могу предложить такой вариант:

#define SendUnauthorizedPlayerMsg(); SendClientMessage(playerid, COLOR_GREY, "Игрок не авторизовался!");
Здесь из названия сразу можно понять, что этот макрос отправляет игроку сообщение о том, что он не авторизован.

Vano_Glad
29.09.2015, 18:33
Daniel_Cortez

Нет. Это не рандомные буквы. Я делал для себя небольшие подсказки. Например: ESCM - что-то типо else SCM, LSCM - Login SCM и т.д. Не видел. И в чём же плоха такая уникальность? Лично мне так удобнее работать с ними. Мне уже тогда будет проще скопировать данную функцию и вставить ещё раз, нежели писать её ещё длинее. В этом и смысл был моего сокращения - удобство (Как минимум для меня).

И почему эта тема не удаляется? Судя по правилам раздела, она должна быть уже удалена давно. Или не выкладываете её? Есть моды на этом сайте, у которых код намного хуже, чем у меня (на ваш взгляд). Тем более я уже подготовил новую версию... Опубликуете - Обновления для данного мода будут. Не опубликуете - тут понятно

gangzone.ini
30.09.2015, 11:38
Daniel_Cortez

Нет. Это не рандомные буквы. Я делал для себя небольшие подсказки. Например: ESCM - что-то типо else SCM, LSCM - Login SCM и т.д. Не видел. И в чём же плоха такая уникальность? Лично мне так удобнее работать с ними. Мне уже тогда будет проще скопировать данную функцию и вставить ещё раз, нежели писать её ещё длинее. В этом и смысл был моего сокращения - удобство (Как минимум для меня).

И почему эта тема не удаляется? Судя по правилам раздела, она должна быть уже удалена давно. Или не выкладываете её? Есть моды на этом сайте, у которых код намного хуже, чем у меня (на ваш взгляд). Тем более я уже подготовил новую версию... Опубликуете - Обновления для данного мода будут. Не опубликуете - тут понятно

"И в чем же плоха такая уникальность" - в том что, только Вам понятен данный код.
"Лично мне так удобнее работать с ними" - вот именно, что Вам, а не другим людям.
А что опубликовывать?


Delete
Последний раз редактировалось Vano_Glad; 26.09.2015 в 14:05

Vano_Glad
30.09.2015, 11:54
gangzone.ini


"И в чем же плоха такая уникальность" - в том что, только Вам понятен данный код.
"Лично мне так удобнее работать с ними" - вот именно, что Вам, а не другим людям.

Не знаете - не говорите. Другим людям так же понятен мой код.


А что опубликовывать?
Код:
Delete
Последний раз редактировалось Vano_Glad; 26.09.2015 в 14:05

Вот получу когда ответ, будут ли вообще публиковать мой мод или нет, тогда и оформлю как надо

gangzone.ini
30.09.2015, 17:25
gangzone.ini



Не знаете - не говорите. Другим людям так же понятен мой код.



Вот получу когда ответ, будут ли вообще публиковать мой мод или нет, тогда и оформлю как надо

Тут и будет весеть) А эту тему удалят.

Vano_Glad
30.09.2015, 17:48
gangzone.ini

Мне как бы без разницы

Роуди.
30.09.2015, 22:09
gangzone.ini

Мне как бы без разницы

Больно нужен Ваш "уникальны" мод :)

Vano_Glad
01.10.2015, 03:31
Роуди.

Давайте без сарказма. Я не говорил, что он "уникальный"