PDA

Просмотр полной версии : [FS] Стример на языке Pawn через FS



Caypen
13.04.2014, 17:08
Написал из чистого любопытства стример на языке Pawn

Внимание!
Скрипт писался без перепроверок
Скрипт писался без тестов и писался он просто на быструю руку

Pastebin: http://pastebin.com/UTLj3FCVv0.1
Pastebin: http://pastebin.com/twqsn88q v0.1.1 (исправлен баг)
Pastebin: http://pastebin.com/u1S2cDL7 v0.1.2 Исправлен критический баг + оптимизация
Pastebin: http://pastebin.com/Z26eU4c4 v0.1.3 Оптимизация + поправки от Картеза.

Скажите свое мнение об этом в теме ну и что отредактировать можно.

Использовать:
Создание объекта

CreateDynObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:DrawDistance = 0.0)


И удаление объекта:

DestroyDynObject(objectid)

Удалять можно только то что вернул CreateDynObject !

Salvacore
13.04.2014, 17:23
Давай ты протестишь...

Caypen
13.04.2014, 17:38
Давай ты протестишь...

Я эту часть предоставляю вам сударь =)

Salvacore
13.04.2014, 17:54
Я эту часть предоставляю вам сударь =)
Мсьё, мне так влом.

Daniel_Cortez
13.04.2014, 19:03
Стример на языке Pawn
Почему же не на C++ или Delphi?


Перейдём к коду:


enum ObjInf
{
modelid2,
used,

Для чего вообще нужно поле "used"? Если ячейка динамического объекта используется, значение поля "modelid" уже будет ненулевым.
Не пробовали делать префиксы перед названиями констант/переменных/функций внутри инклуда? Или хотя бы задавать им параметр static, чтобы они не мешались в глобальной зоне видимости?...
Вот после таких "шедевральных" работ новички удивляются, мол почему же это компилятор ругается на локальные переменные типа "used", "X1", "X2" и начинают выдумывать для переменных всякие бредовые названия типа "stringg", "stringggg", "stringer", etc. - добро пожаловать в клуб нубов-RLSников!




new bool:Created[MAX_PLAYERS][MAX_DYN_OBJECTS];
Использовать массив из bool, чтобы хранить значения, которые имеют всего 2 состояния? Oh please...
Можно расходовать память гораздо эффективнее:

static streamer__CreatedForPlayerFlag[MAX_PLAYERS][MAX_DYN_OBJECTS char];
Итого массив будет занимать в 4 раза меньше пространства, экономия памяти MAX_PLAYERS(500) x MAX_DYN_OBJECTS(1000) x (4-1) = 1500000 байт ~= 1.43 Мб.

Caypen
13.04.2014, 19:22
Почему же не на C++ или Delphi?


Перейдём к коду:
Для чего вообще нужно поле "used"? Если ячейка динамического объекта используется, значение поля "modelid" уже будет ненулевым.
Точно не помню существует ли моделька номер 0,если нет то вы правы и я это исправлю.


Не пробовали делать префиксы перед названиями констант/переменных/функций внутри инклуда? Или хотя бы задавать им параметр static, чтобы они не мешались в глобальной зоне видимости?...
Вот после таких "шедевральных" работ новички удивляются, мол почему же это компилятор ругается на локальные переменные типа "used", "X1", "X2" и начинают выдумывать для переменных всякие бредовые названия типа "stringg", "stringggg", "stringer", etc. - добро пожаловать в клуб нубов-RLSников!

Я полагал что таких на этом портале нет,но ладно изменю


Использовать массив из bool, чтобы хранить значения, которые имеют всего 2 состояния? Oh please...
Можно расходовать память гораздо эффективнее:

static streamer__CreatedForPlayerFlag[MAX_PLAYERS][MAX_DYN_OBJECTS char];
Итого массив будет занимать в 4 раза меньше пространства, экономия памяти MAX_PLAYERS(500) x MAX_DYN_OBJECTS(1000) x (4-1) = 1500000 байт ~= 1.43 Мб.
ладно,исправлю.

XemyL
13.04.2014, 19:29
Ну сделал и молодец. А тут то он кому нужен?

Caypen
13.04.2014, 19:31
Ну сделал и молодец. А тут то он кому нужен?

Чисто для любопытства.

XemyL
13.04.2014, 19:36
Чисто для любопытства.

Нуок. Хрень) Мог хотя бы реализовать деление по чанкам. А такое любой нуб напишет.