Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: New Rp [ New.pwn] - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Other ]
New Rp [ New.pwn] Основа для мода
Оценка: -----

#1
Пользователь офлайн   Mike Twen 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Приветствую, решил для вас написать основу для мода

      Всего строк в моде: 1098(С маппингом интерьера для Регистрации)
      Оптимизирован
      Хороший мод для начинающих


    Системная часть мода:

    MySQL R39-6
    Foreach
    Pawn.CMD
    Streamer







Ссылка на New Rp
[VT]

Почему я выложил мод с нуля?
Потому-что я не смог найти здесь мод который подходил бы мне и может не только
Я хотел мод без всяких там системов вроде как - сис-ма админки или сис-ма домов с бизнесом
Хотел себе чистый мод с нуля, но здесь такого нет

И я решил написать его сам и вот ОН мод с нуля, и почему я его выкладываю?
Потому-что я хочу чтобы вы его доделывали сами, как вы хотите, что бы вы добавили, что хотите сами
И мне не нужно + или комментарии что-то вроде как - Продолжай или Напиши какую-нибудь сис-му, НЕТ!

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

Я хочу только одно попросить, я давно хочу написать свой мод с нуля сам хочу и сис-мы тоже, если вы знаете Pawn язык, если не сложно то помогите мне хоть чуточку
Только у меня нет денег и я знаю, что мало кто сможет помочь без денег НО все-одно Спасибо

Сообщение отредактировал Mike Twen: 26 июля 2019 - 06:30

1

#2
Пользователь офлайн   Jkent_Rockfeller 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию
*** чувак красавчик конечно, но сорян я в mysql не разбираюсь нихуя))). Для меня как то роднее mxINI щас ищу основу мода на нем.
0

#3
Пользователь офлайн   CL1FF 

  • Местный
  • Вставить ник
  • Раскрыть информацию
Посмотрел мод и был приятно удивлен.
Мод написан очень грамотно, пока конечно рано говорить о будущих твоих системах, но сейчас код написан намного лучше, чем у многих опытных скриптеров.
Мне очень приятно смотреть когда новички учатся сразу что то делать с нуля и узнают о всех функциях. А не дураки которые берут дибильные RLS моды (сейчас же мода пошла на дибильные Арризоновские моды) и меняют текст, потом жалуются что много ошибок из за того что они удалили какой то символ или не знают для чего используется паблик/функция.

Желаю тебе удачи во всех будущих начинаниях. Если будут какие то спорные вопросы по скриптингу - можешь смело ко мне обращаться ВКонтакте.

P.S. Я только одного не понял, зачем использовать R39-6, если лучше использовать последнюю версию R41-4?
0

#4
Пользователь офлайн   Sonic X 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Выскажу своё мнение, если же никто не против :biggrin:

Не плохо, но есть куда расти :wink:
Например, вот такие велосипеды не нужно изобретать:
UpdateTime(playerid)
{
    if(pInfo[playerid][pMoney] != GetPlayerMoney(playerid))
	{
	    ResetPlayerMoney(playerid);
	    GivePlayerMoney(playerid, pInfo[playerid][pMoney]);
	}
	update_timer[playerid] = SetTimerEx("UpdateTime", 1000, false, "i", playerid);
	return true;
}
public GetID(playerid)
{
	pInfo[playerid][pID] = cache_insert_id();
	return true;
}
public FastSpawn(playerid)
{
	SpawnPlayer(playerid);
	return true;
}

По поводу денег, вообще руки отбить нужно. Тебя не должно волновать, что игрок делает со своими деньгами на клиентской стороне. Главное, чтобы сумма хранилась в переменной, и все операции производить с ней. А когда меняешь количество денег, всё равно же сбрасываешь на 0, разве нет? И зачем тратить ресурсы сервера на такой бессмысленный процесс?

Узнать ID - через дефайн сделать нельзя что ли? :blush:
А вот такие "спавны" к чему? Только если ещё что-то нужно выводить игроку, но опять же.. Неужели это ты так часто будешь использовать, что приходится сделать функцию ради этого? Опять же, через дефайн можно сделать.


По поводу:
static const fmt_str[] =""

Вот эти велосипеды не всем понятны, раз ты выкладываешь для всех, а тем более, не столь эффективно. Лучше просто вставлять текст в формате. - Дело вкуса...)


pInfo[playerid][pSkin] = GetPlayerSkin(playerid);

Старайся никогда не использовать так функции.. Я в том смысле, что ты должен руководить процесом, а не как-то в перемешку. Ты указал скин для переменной, потом ИЗМЕНЯЕШЬ сам скин на тот, который в переменной. А что будет дальше с его скином - тебя, опять же, не сильно должно волновать. Ведь при любой другой проверке у тебя данные хранятся на сервере, а не где-то у игрока их берёшь.


new year_server,
month_server,
day_server;

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


Здесь как раз-таки лучше использовать статичные переменные, ведь данный колбэк довольно часто вызывается и каждый раз ты создаёшь переменные, а там, где вызывается не часто, или вообще - единожды, ты используешь статику - ну такое :dry:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new len = strlen(inputtext),
    val = strval(inputtext);

Сообщение отредактировал Sonic X: 26 июля 2019 - 15:14

1

#5
Пользователь офлайн   CL1FF 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияSonic X (26 июля 2019 - 15:12) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]


Полностью поддерживаю, к сожалению сонной головой вчера не заметил этих ошибок.

Для работы с наличными игроками, можно к примеру использовать эту или похожую функцию:

stock SetPlayerCash(playerid, amount)
{
	Player[playerid][Cash] = amount; // Записываем данные в массив игрока
	ResetPlayerMoney(playerid); // Очищаем наличные
	GivePlayerMoney(playerid, amount); // Выдаем новую сумму
}

0

#6
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияSonic X (26 июля 2019 - 15:12) писал:

public GetID(playerid)
{
	pInfo[playerid][pID] = cache_insert_id();
	return true;
}


Узнать ID - через дефайн сделать нельзя что ли? :blush:


Судя по cache_insert_id, функцию GetID вызывает какой-то INSERT-запрос, так что "через дефайн" сделать нельзя :)

Просмотр сообщенияSonic X (26 июля 2019 - 15:12) писал:

public FastSpawn(playerid)
{
	SpawnPlayer(playerid);
	return true;
}


А вот такие "спавны" к чему? Только если ещё что-то нужно выводить игроку, но опять же.. Неужели это ты так часто будешь использовать, что приходится сделать функцию ради этого? Опять же, через дефайн можно сделать.


У макросов есть одна неприятная особенность - зона видимости. Если тебе понадобиться использовать макрос где-то в инклудах, придётся позадобиться о том, чтоб макрос был всегда выше кода подключения инклудов. А это только лишний раз голову забивает. Так что обрамление кода в функции, а не в макрос, вполне имеет место быть. Только не совсем понятно почему функция объявлена через public (код я, как вы могли понять, не смотрел, а лишь решил критику прокомментировать). Если не планируется вызывать функцию таймером (а это, вероятнее всего, и планируется) или из другого скрипта при помощи CallRemoteFunction, то лучше объявлять такую функцию через ключевое слово stock или без ключевого слова вообще (тогда просто создастся функция, которую обязательно нужно будет вызывать где-то, иначе компилятор будет ругаться на то, что функция нигде не используется).


Просмотр сообщенияSonic X (26 июля 2019 - 15:12) писал:

Здесь как раз-таки лучше использовать статичные переменные, ведь данный колбэк довольно часто вызывается и каждый раз ты создаёшь переменные, а там, где вызывается не часто, или вообще - единожды, ты используешь статику - ну такое :dry:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new len = strlen(inputtext),
    val = strval(inputtext);


Имхо, но недостаточно часто, чтоб засирать этим сегмент данных :) С таким подходом можно вообще все переменные засунуть в сегмент данных, раздув размер .amx до нереальных размеров. Ничего хорошего из этого не выйдет. Не нужно настолько бояться локальных переменных. На их инициализацию уходит крайне мало времени, чтоб его учитывать. Просто в тех же циклах это просто бессмысленная трата времени. А тут всё вполне обосновано и к месту.

И да, делать подобного рода "глобальные локальные массивы" - зло. Этим ты (автор мода) только открываешь дорогу для возможности совершить опечатку, вставив где-то вместо одной переменной, те, которые ты объявил в начале паблика. Да и далеко не во всех ситуациях тебе понадобится определять длину строки, записанной в inputtext, или превращать её в число. Зачем заставлять сервер делать это всякий раз, когда игрок взаимодействует с любым из диалогов?

Хотя, возможно, это просто Sonic X так скопировал :)

Сообщение отредактировал DeimoS: 26 июля 2019 - 19:10

0

#7
Пользователь офлайн   Sonic X 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (26 июля 2019 - 19:02) писал:

Хотя, возможно, это просто Sonic X так скопировал :)

Так оно и есть :biggrin: У меня же нет цели загнобить автора или ещё что, просто говорю за моменты, которые я бы лично сделал по другому :happy:
0

#8
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияSonic X (26 июля 2019 - 21:44) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Я это к тому, что всё моё прошлое сообщение основано именно на том, что ты процитировал в своём сообщении. Сам мод я не качал и не ковырял, поэтому могу быть не прав относительно кода из мода.
0

#9
Пользователь офлайн   CL1FF 

  • Местный
  • Вставить ник
  • Раскрыть информацию
//dell

Сообщение отредактировал CL1FF: 27 июля 2019 - 19:56

0

#10
Пользователь офлайн   Jkent_Rockfeller 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияCL1FF (25 июля 2019 - 18:43) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

MySQL R41-4 некорректно работает, по этому используют все, даже я 39-6. Ну только не давно я начал использовать.
0

Поделиться темой:


  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика