#1 11-06-2007 09:15

Seemann
Registered: 07-08-2006
Posts: 2,155

Обновление классов

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

Будьте активнее, разрешаю мультипостить в этой теме.

Offline

#2 11-06-2007 10:21

Sergino_thirty_seven
Registered: 06-06-2007
Posts: 18

Re: Обновление классов

У меня не предложение,а скорее замечание ,некоторые опкоды написаны не совсем корректно например:
0668: AS_actor 35@ rotate 374.2905 -125.681 1001.308 2000 ms
судя по написанию актер должен повернутся к точке за 2 секунды,а вместо этого он атакует в сторону этой точки


Sergino_thirty_seven ака Sergino37 скриптер с missions.gtamaps.net

Offline

#3 11-06-2007 10:48

Stalker2012
Registered: 11-06-2007
Posts: 27

Re: Обновление классов

У меня предложение добавить в Санн функцию поиска(сравнения) элементов в массиве.
Например:
$rez_poska = in_mass($mass, $isk_elem)
// результат true/false или номер элемента массива, или сам элемент.
А то надоедает писать циклы.

Offline

#4 12-06-2007 04:47

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Обновление классов

2Sergino_thirty_seven:
Учту это. Если есть еще ошибки - говори.

Stalker2012 wrote:

А то надоедает писать циклы.

Добавь макрос с болванкой поиска в массиве, а потом по нажатию F2 вызывай его.

Offline

#5 13-06-2007 10:47

Sanchez
Registered: 18-08-2006
Posts: 280

Re: Обновление классов

Может имена классов Car и Actor заменить на Vehicle и Ped?

Offline

#6 13-06-2007 19:21

Sergino_thirty_seven
Registered: 06-06-2007
Posts: 18

Re: Обновление классов

Будет не совсем корректно насчет Ped,а вот насчет Vehicle очень кстати


Sergino_thirty_seven ака Sergino37 скриптер с missions.gtamaps.net

Offline

#7 14-06-2007 03:27

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Обновление классов

Нет, старые классы меняться не будут, т.к. ничего, кроме проблем совместимости со старыми исходниками, это не даст.

Вы лучше предлагайте новые классы или новые методы к существующим классам.

Offline

#8 14-06-2007 08:58

Sanchez
Registered: 18-08-2006
Posts: 280

Re: Обновление классов

Вы лучше предлагайте новые классы или новые методы к существующим классам.

1. Класс (Math) для математических функций (sin, cos, rnd);
2. Класс (Print) для всех текстовых опкодов.

Offline

#9 14-06-2007 09:03

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Обновление классов

Класс (Print) для всех текстовых опкодов.

Была такая идея, только вот название мне кажется не совсем подходит. Есть варианты Text, Screen, что скажешь?

Offline

#10 14-06-2007 09:15

Sanchez
Registered: 18-08-2006
Posts: 280

Re: Обновление классов

Есть варианты Text, Screen, что скажешь?

Лучше тогда Screen.

Offline

#11 14-06-2007 09:26

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Обновление классов

Есть ли смысл добавить в класс Screen кроме текста команды типа Fade, IsFading или ToggleRadar, ToggleHud?

Offline

#12 14-06-2007 09:34

Sanchez
Registered: 18-08-2006
Posts: 280

Re: Обновление классов

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

Offline

#13 14-06-2007 09:37

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Обновление классов

Еще вопрос, нужны лы субклассы? Например, Screen.Panel.GetActiveRow, Screen.Text.DrawAt(). Или делать одним классом (разными классами)?

Субклассы можно и для некоторых других классов, например: Actor.Task.ExitVehicle(), Player.Stat.IncreaseByFloat()

Offline

#14 14-06-2007 18:42

Sergino_thirty_seven
Registered: 06-06-2007
Posts: 18

Re: Обновление классов

Да будет лучше с сабклассами,новичкам будет легче учится

Last edited by Sergino_thirty_seven (14-06-2007 18:52)


Sergino_thirty_seven ака Sergino37 скриптер с missions.gtamaps.net

Offline

#15 14-06-2007 21:36

Alexander
Registered: 19-08-2006
Posts: 184
Website

Re: Обновление классов

Я предлагаю сделать с субклассами , насчёт Screen.Text - это то что надо , один из самых разнообразных классов , который ещё не задейстован

Offline

#16 18-06-2007 14:04

Sanchez
Registered: 18-08-2006
Posts: 280

Re: Обновление классов

Еще вопрос, нужны лы субклассы? Например, Screen.Panel.GetActiveRow, Screen.Text.DrawAt(). Или делать одним классом (разными классами)?

Может для текста - GXT, а в Screen все остальное

Да будет лучше с сабклассами,новичкам будет легче учится

С субклассами конечно будет лучше, но новичкам будет не легче учиться, а легче запутаться.

---
Можно сделать классы Fire и Train.

---
Хотелось что-бы все конструкторы и деструкторы имели одинаковые имена. (Create, Destroy например).

Offline

#17 19-06-2007 04:02

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Обновление классов

Может для текста - GXT

GXT подходит только для некоторых опкодов, а вот для большинства text_draw именно Text - хороший вариант.

С субклассами конечно будет лучше, но новичкам будет не легче учиться, а легче запутаться.

Ну в следующей версии их не будет, это я скорее на будущее спрашиваю.

Offline

#18 02-07-2007 02:46

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Обновление классов

Идея с субклассами хорошая, потому что если добавлять новые классы, то получится неразбериха, кто где.
У актёров, машин, объектов и др. нужно добавить одинаковые проверки места,  например: Actor.InRestangle_OnFoot (или с субклассами Actor.InRestangle.OnFoot (или Actor.Pos.InRestangle.OnFoot)) и Object.InSphere. И другие однотипные действия, а то очень неудобно искать в опкодах, да ещё в SASCM.INI параметр Sphere то идёт то вторым, то последним.


[small][/small]

Offline

#19 02-07-2007 06:49

Stalker2012
Registered: 11-06-2007
Posts: 27

Re: Обновление классов

Субклассы добавлять надо однозначно, а для совместимости со старыми версиями санни сделать конвертор кода.

Еще было бы не плохо добавить возможность скрывать(как в Visual studio например) отдельные участки кода в едиторе или хотя бы потоки

Offline

#20 03-07-2007 07:49

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Обновление классов

Еще было бы не плохо добавить возможность скрывать(как в Visual studio например) отдельные участки кода в едиторе или хотя бы потоки

Это называется Code Folding и, к сожалению, SynEdit это не поддерживает (есть сторонние разработки, но они не совсем подходят).

Offline

#21 03-07-2007 08:04

Stalker2012
Registered: 11-06-2007
Posts: 27

Re: Обновление классов

Seemann wrote:

Это называется Code Folding и, к сожалению, SynEdit это не поддерживает (есть сторонние разработки, но они не совсем подходят).

Может тогда использовать закладки. Автоматически создавать закладки для каждого потока или раздела, а для быстрого доступа к ним добавить панельку со списком всех закладок в виде ссылок.
Это я думаю реализовать возможно.

Offline

#22 16-09-2008 08:26

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Обновление классов

Ну что, кто у нас ответственный за классы?
P.S. Лично я мог бы оказывать разовые помощи [small](для постоянных у меня связь не стабильна, да и ошибок наделаю).[/small]

Last edited by VcSaJen (16-09-2008 08:30)


[small][/small]

Offline

#23 22-02-2014 14:24

wmysterio
Registered: 04-03-2011
Posts: 215
Website

Re: Обновление классов

Предлагаю добавить такие классы:

Animation
.Load
.Loaded
.Unload
.PerformPed (или переместить этот в класс Actor)
.EnablePause
.GetTotalTime
.GetCurrentTime
.SetProgressTo

Text
.ShowDialog
.DisplayBox
.PrintWithStyle
.Align
.Color
.Shadow
.Size
.Style
.Font
.Linewidth
.DrawingMode
.DrawAt

Texture
.LoadTXD( txdName )
.SetNumber( textureName, id )
.SetAntialiased
.Release
.DrawAt

Display
.EnableWidescreen
.EnableRadar
.EnableHud
.FlashHudComponent
.EnableStatBox
.SetGreyRadar

Fire
.InitInWorld
.CreateAnActor
.CreateAnCar
.Extinguished
.Remove
.Exists
.StorePosition

Предлагаю также добавить следующие команды:
Actor.Defined($PED)
CarDefined($Car)

load_models (кейворд 038B)
function (кейворд 0AB1)
repay (кейворд 0AB2)
start_scene (кейворд 0707)
end_scene (кейворд 0701)


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

Суб-классы бы не помешали  blush

Last edited by wmysterio (22-02-2014 14:29)

Offline

#24 22-02-2014 16:39

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Обновление классов

Проблема в том, что сначала нужно переименовать все опкоды. Сейчас известны оригинальные названия всех опкодов, и оригинальные названия сущностей, которые использовали R*. Например, актеры в оригинале назывались Ped, значит по-хорошему и соответствующий класс должен называться Ped, а не Actor. Вместо Player - Char. Попутно нужно решить, что делать с порядком следования параметров. Сейчас они идут как попало, где-то в оригинальном порядке, где-то переставлены. Во всех конструкторах переменная, куда записывается результат, стоит в конце. Но логичнее смотрится когда эта переменная стоит в начале:
009A: 0@ = create_actor #null 0 0 0 вместо 009A: create_actor #null 0 0 0 0@
Не все опкоды-конструкторы приведены к единому порядку следования, поэтому и запихнуть их в классы не получится.
Вот пока я не придумал хорошего и удобного решения для этой проблемы, чтобы не пропала возможность использовать старые скрипты.

Offline

#25 22-02-2014 18:53

wmysterio
Registered: 04-03-2011
Posts: 215
Website

Re: Обновление классов

Seemann wrote:

Проблема в том, что сначала нужно переименовать все опкоды. Сейчас известны оригинальные названия всех опкодов, и оригинальные названия сущностей, которые использовали R*. Например, актеры в оригинале назывались Ped, значит по-хорошему и соответствующий класс должен называться Ped, а не Actor. Вместо Player - Char.

Я могу заняться переименованием. Случилось так, что у меня появилось много свободного времени да и заняться в общем-то нечем.

Seemann wrote:

Попутно нужно решить, что делать с порядком следования параметров.

Как вариант: оставить оригинальное последование параметров. Сделать новую разметку классов, с описанием где какой параметр должен стоять. К примеру можно использовать xml-файл с такой разметкой:

<CLASSES>
     <PED>
          <COMMAND>
              <NAME>Create</NAME>
              <OPCODE>XXXX</OPCODE>
              <PARAMS>
                   <DESCRIPTIONS>%d %i %f %f %f %h</DESCRIPTIONS>
                   <POSITION>6 = LEFT</POSITION>
              </PARAMS>
          </COMMAND>
          <COMMAND>
              <NAME>PutAt</NAME>
              <OPCODE>XXXX</OPCODE>
              <PARAMS>
                   <DESCRIPTIONS>%f %f %f %h</DESCRIPTIONS>
                   <POSITION>%h 0</POSITION>
              </PARAMS>
          </COMMAND>
          <COMMAND>
              <NAME>Destroy</NAME>
              <OPCODE>XXXX</OPCODE>
              <PARAMS>
                   <DESCRIPTIONS>%h</DESCRIPTIONS>
              </PARAMS>
          </COMMAND>
          <COMMAND>
              <NAME>Healt</NAME>
              <OPCODE>XXXX</OPCODE>
              <PARAMS>
                   <DESCRIPTIONS>%d %h</DESCRIPTIONS>
                   <POSITION>1 >= RIGHT</POSITION>
              </PARAMS>
          </COMMAND>
     </PED>
</CLASSES>

Это в компиляторе должно выглядеть как
%h = PED.Create( %d %i %f %f %f )
PED.PutAt( %h %f %f %f )
PED.Destroy( %h )
PED.Health( %h ) >= %d

При компиляции берётся порядок с DESCRIPTIONS и подставляются соответствующие значения. Идея в том, чтобы не писать порядок каждому опкоду, а только тем, что описаны в файле классов.

Seemann wrote:

чтобы не пропала возможность использовать старые скрипты

Да, с этим есть проблема. Возможно есть смысл всё-же начать новую главу в СБ и кардинально всё поменять, введя новизну, но это грозит утомительный переход как "старых волков" в скриптинге, так и пользователей, которые, скорее всего, будут забивать форум вопросами "почему" и.т.п. Две стороны медали.

Offline

Board footer

Powered by FluxBB