Сейчас 23:33:35 Пятница, 22 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: PUVer, SirNikolas, Ty3uK  
[ВАЖНО] Jass: Полезные функции
SirNikolasДата: Четверг, 26 Мая 2011, 18:17:38 | Сообщение # 101
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (|DS|)
Может сразу свою CasterSystem напишешь
А что в ней такого сложного?
Всего типов дамми - (DUMMY_TYPES_MAX + 1); дамми на каждый тип - (DUMMY_MAX + 1); время жизни дамми - DUMMY_LIFE. Все типы дамми нужно указать в функции Init. Если вдруг занятых дамми окажется больше, чем задано, создастся новый и получит "таймер жизни".

Добавлено (26-05-2011, 18:17)
---------------------------------------------
Разумеется, у данной библиотеки минимальный функционал, но все остальное можно построить на ней.


 

[DS]Дата: Пятница, 03 Июня 2011, 12:27:04 | Сообщение # 102
9 уровень
Группа: Проверенные
Сообщений: 1116
Награды: 0
Репутация: 527
Блокировки:
SirNikolas, да просто сам писал эту систему, я сразу в нест. код карты писал, это правильно?

Добавлено (01-06-2011, 20:21)
---------------------------------------------
Может кому-нибудь понадобится, это расстояние от точки 1 до точки 2 в 3D:
function Dist3D takes real x1, real y1, real z1, real x2, real y2, real z2 returns real
return SquareRoot((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1))
endfunction

Добавлено (01-06-2011, 20:36)
---------------------------------------------
function StopUnit takes unit u returns nothing
call PauseUnit(u, true)
call IssueImmediateOrderById(u, 851972)
call PauseUnit(u, false)
endfunction

По названию понятно че за функция.

Добавлено (03-06-2011, 12:27)
---------------------------------------------
function DisplayTextToAllies takes integer p,real dur,string s returns nothing
local integer i=0
loop
if ArePlayersAlly(p,i)or i==p then
call DisplayTimedTextToPlayer(Player(i),0.,0.,dur,s)
endif
set i=i+1
exitwhen i>11
endloop
endfunction


 

FkoFFДата: Воскресенье, 05 Июня 2011, 16:31:26 | Сообщение # 103
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (SirNikolas)
А что в ней такого сложного?

вообще из другой оперы. Caster System = Elemental Damage, Spell Casting System, Missle System, Buff System, фрагменты я выложил (даммикаст, кулдаун слот)...; Ну и куча апи для работы с эффектами, спеллами и прочими ништяками..


 

subakuДата: Пятница, 10 Июня 2011, 18:43:34 | Сообщение # 104
6 уровень
Группа: Проверенные
Сообщений: 174
Награды: 0
Репутация: -18
Блокировки:
FkoFF, dummy cast
объясни нубу, это изменяемая функция? или её нужно просто вызывать? а то там у тебя SpellID = integer а вроде должно быть string...


ФЕНИКС ЧО
 

[DS]Дата: Суббота, 11 Июня 2011, 10:41:00 | Сообщение # 105
9 уровень
Группа: Проверенные
Сообщений: 1116
Награды: 0
Репутация: 527
Блокировки:
ид интежер все правильно, там подставляешь свой ид способности

 

ЭллесарДата: Суббота, 11 Июня 2011, 16:27:27 | Сообщение # 106
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
Чтение кода из указанного файла с диска

Code
globals
     string name = null
endglobals

function ReadCode_1 takes nothing returns nothing
       call Preloader(name)
endfunction
function ReadCode takes string name_file returns nothing
     set name = name_file
     call ExecuteFunc("ReadCode_1")
endfunction


Должны быть включенны лок файлы. можно прописать так:

Code
[HKEY_CURRENT_USER\Software\Blizzard Entertainment\Warcraft III]
"Allow Local Files"=dword:00000001


Главная функция в этом файле -

function PreloadFiles takes nothing returns nothing
//ваш код
endfunction

переменная name - путь к вашему файлу (напр "war\\tf.txt")

очень полезно при тесте карты, когда её можно не закрывать, но вносить поправки.
(все глобальные переменные, функции игры нельзя использовать в этом коде, но их можно перенести. если объявляете глобальные переменные в вашем файле,область видимости переменных - данный файл.


база паролей: https://yadi.sk/d/mdDhWuvPcTSKw
бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
 

subakuДата: Вторник, 14 Июня 2011, 09:46:44 | Сообщение # 107
6 уровень
Группа: Проверенные
Сообщений: 174
Награды: 0
Репутация: -18
Блокировки:
Эллесар, О_О нифинга себе...
Quote (Эллесар)
очень полезно при тесте карты, когда её можно не закрывать, но вносить поправки.

Сделай ещё чтоб в игре были видны изменения о_о

Добавлено (14-06-2011, 09:43)
---------------------------------------------

Как можно оптимизировать?

Добавлено (14-06-2011, 09:46)
---------------------------------------------
Эллесар, кстати, ф-ю прелоад лучше же использовать в иниц. карты? если это та, о которой думаю я ( создание спецеффектов, и других ресурсов для спеллов и их удаление)


ФЕНИКС ЧО


Сообщение отредактировал subaku - Вторник, 14 Июня 2011, 09:45:19
 

SirNikolasДата: Вторник, 14 Июня 2011, 11:14:17 | Сообщение # 108
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Эллесар)
все глобальные переменные, функции игры нельзя использовать в этом коде, но их можно перенести.
Каким образом?

subaku, твой код проще переписать с нуля.




Сообщение отредактировал SirNikolas - Вторник, 14 Июня 2011, 11:17:53
 

subakuДата: Вторник, 14 Июня 2011, 11:45:21 | Сообщение # 109
6 уровень
Группа: Проверенные
Сообщений: 174
Награды: 0
Репутация: -18
Блокировки:
SirNikolas, с таким кодом вар фатал выдаёт, даже не запустив вар)

ФЕНИКС ЧО


Сообщение отредактировал subaku - Вторник, 14 Июня 2011, 12:00:06
 

SirNikolasДата: Вторник, 14 Июня 2011, 12:06:18 | Сообщение # 110
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (subaku)
вар фатал выдаёт, даже не запустив вар
Ничего не понимаю. Как незапущенная программа может фаталить?


 

subakuДата: Вторник, 14 Июня 2011, 14:30:38 | Сообщение # 111
6 уровень
Группа: Проверенные
Сообщений: 174
Награды: 0
Репутация: -18
Блокировки:
Quote (SirNikolas)
Ничего не понимаю. Как незапущенная программа может фаталить

ну всмысле, карта не успевает начать загружаться, и уже фатал.


ФЕНИКС ЧО
 

ЭллесарДата: Вторник, 14 Июня 2011, 17:12:49 | Сообщение # 112
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
Quote (SirNikolas)
Каким образом?


Для integera:

GetPlayerTechMaxAllowed
SavePlayerTechMaxAllowed

для строки меняют имя, 15 игрока к примеру.
для реального позицию стартовой точки...

Если надо запустить свою функцию, то нужно использовать ExecuteFunc("имя функции")

Quote (subaku)
Эллесар, О_О нифинга себе...

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


база паролей: https://yadi.sk/d/mdDhWuvPcTSKw
бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
 

SirNikolasДата: Вторник, 14 Июня 2011, 17:45:35 | Сообщение # 113
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Эллесар)
Для integera:

GetPlayerTechMaxAllowed
SavePlayerTechMaxAllowed
для строки меняют имя 15 игрока, к примеру.
для реального позицию стартовой точки...
Ага, я пытался разобраться в Data Manager'е. Но если нам нужно сохранить две строки, в качестве имени игрока запишется только последняя.


 

ЭллесарДата: Вторник, 14 Июня 2011, 20:55:15 | Сообщение # 114
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
Quote (SirNikolas)
Ага, я пытался разобраться в Data Manager'е. Но если нам нужно сохранить две строки, в качестве имени игрока запишется только последняя.

а экзекут для чего? сначало меняй имя игрока, потом вызываем Execute("ex_string")

function ex_string takes nothing returns nothing
//записываем в любую переменную имя игрока
set Mystr[kount] = Имя игрока
set kount = kount + 1
endfunction

то есть в файле меняем имя игрока, и записываем стринг в переменную. И можно повторить


база паролей: https://yadi.sk/d/mdDhWuvPcTSKw
бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE


Сообщение отредактировал Эллесар - Вторник, 14 Июня 2011, 20:55:55
 

subakuДата: Пятница, 17 Июня 2011, 12:42:36 | Сообщение # 115
6 уровень
Группа: Проверенные
Сообщений: 174
Награды: 0
Репутация: -18
Блокировки:
Quote (Эллесар)
это ещё цветочки, ягодки, когда читаешь данные с интернета. Возможно создавать игру для более 12 игроков...хранить данные игрока, переход из одной карты в другую.

На хгме же был проект ММО на варике, даже некоторое время играли, а сейчас загнулся на неопределённый срок этот серв.


ФЕНИКС ЧО
 

DeadJassДата: Среда, 06 Июля 2011, 20:04:00 | Сообщение # 116
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
Может уже было.но все же вдруг кто забыл.
Ну опоптные Jassers самыи сделают но новичкам думаю пригодится
ф-ия по создаюнию дами добавление абилки и кастом ее в точку

Code
function AbUnit takes unit u,integer id,integer lvl,real time,integer order,real x,real y  returns nothing
call UnitApplyTimedLife(u,'BTLF',time)
call UnitAddAbility(u,id)
call SetUnitAbilityLevel(u,id,lvl)
call IssuePointOrderById(u,order,x,y)
endfunction



^ кликабельно
Archers Of The Island v1.8 - на стадии завершения
 

FkoFFДата: Среда, 06 Июля 2011, 20:53:13 | Сообщение # 117
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
DeadJass, лучше пусть функция еще и создает дамми (для сокращения длины кода + фиксации дамми юнита)

 

BinGOДата: Четверг, 07 Июля 2011, 02:45:32 | Сообщение # 118
Группа: Модераторы
Сообщений: 2906
Награды: 8
Блокировки:
Каждый делает по-своему. Но, действительно, было бы удобнее написать полную функцию с созданием, кастом и удалением даммика.
 

ЭллесарДата: Четверг, 07 Июля 2011, 03:18:25 | Сообщение # 119
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
Удалять лучше через таймер исчезновение, утечек не создает.

база паролей: https://yadi.sk/d/mdDhWuvPcTSKw
бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
 

FkoFFДата: Четверг, 07 Июля 2011, 03:25:31 | Сообщение # 120
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (Эллесар)
Удалять лучше через таймер исчезновение, утечек не создает.

если на дамми не ссылается ни одна переменная то не будет и утечки спустя 80 секунд, ты же знаешь.


 

BinGOДата: Четверг, 07 Июля 2011, 03:31:48 | Сообщение # 121
Группа: Модераторы
Сообщений: 2906
Награды: 8
Блокировки:
Quote (Эллесар)
Удалять лучше через таймер исчезновение, утечек не создает.

Я так и делаю nate
Удобнее знать, что утечка ликвидируется сразу.
 

FkoFFДата: Четверг, 07 Июля 2011, 04:50:14 | Сообщение # 122
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
B1nGO, таймер == лишний объект. Не рационально.

 

ЭллесарДата: Четверг, 07 Июля 2011, 07:11:02 | Сообщение # 123
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
Quote (FkoFF)
B1nGO, таймер == лишний объект. Не рационально.

Кто-то говорил об CreateTimer() ?


база паролей: https://yadi.sk/d/mdDhWuvPcTSKw
бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
 

DeadJassДата: Четверг, 07 Июля 2011, 23:54:05 | Сообщение # 124
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:





^ кликабельно
Archers Of The Island v1.8 - на стадии завершения


Сообщение отредактировал DeadJass - Пятница, 08 Июля 2011, 13:12:37
 

[DS]Дата: Пятница, 08 Июля 2011, 23:01:58 | Сообщение # 125
9 уровень
Группа: Проверенные
Сообщений: 1116
Награды: 0
Репутация: 527
Блокировки:
Не BJ функция TriggerRegisterAnyUnitEventBJ:
Code
function ReturnTrue takes nothing returns boolean
     return true
endfunction

function TriggerRegisterAnyUnitEvent takes trigger t, playerunitevent e returns nothing
     local integer i = 0
     loop
         call TriggerRegisterPlayerUnitEvent(t,Player(i),e,Condition(function ReturnTrue))
         set i = i+1
         exitwhen i==16
     endloop
endfunction


 

Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz