| Полезные функции |
| Vedun | Дата: Пятница, 18-05-2007, 13:17 | Сообщение # 1 |
Подполковник
Группа: Проверенные
Сообщений: 129
| Code function DisplayTextForPlayer takes player p, string text returns nothing if GetLocalPlayer() == p then call DisplayTextToForce(GetPlayersAll(), text) endif endfunction Функция выводит сообщение для одного игрока. Время "жизни" сообщения определяется автоматически. Code function DisplayTextForPlayerTimed takes player p, string text, real time returns nothing if GetLocalPlayer() == p then call DisplayTimedTextToForce(GetPlayersAll(), time, text) endif endfunction Функция выводит сообщение для одного игрока. Время "жизни" сообщения определяется параметром time. Code function CreateOneUnit takes player p, integer id, location loc returns unit set bj_lastCreatedUnit = CreateUnitAtLocSaveLast(p, id, loc, bj_UNIT_FACING) return bj_lastCreatedUnit endfunction Функция вара для создания юнитов крайне неудобна, так как даже создавая 1 юнита она возвращает нам группу. Данная функция создаёт одного юнита в нужной нам точке, не требуя никаких лишних параметров. Code function PlayerColor takes integer i returns string if i == 1 then return "|CFFFF0000" elseif i == 2 then return "|CFF0000FF" elseif i == 3 then return "|CFF18E7BD" elseif i == 4 then return "|CFF520084" elseif i == 5 then return "|CFFFFFF00" elseif i == 6 then return "|CFFFF8A08" elseif i == 7 then return "|CFF18BE00" elseif i == 8 then return "|CFFE759AD" elseif i == 9 then return "|CFF949694" elseif i == 10 then return "|CFF7BBEF7" elseif i == 11 then return "|CFF086142" elseif i == 12 then return "|CFF4A2800" elseif i == 13 then return "|CFF383838" elseif i == 14 then return "|CFFFFF799" endif return "" endfunction Набор цветовых кодов вара для каждого игрока. Передаём в функцию номер игрока, она возвращает нам его цвет. Code function SetColorText takes player p, string text returns string return PlayerColor(GetConvertedPlayerId(p)) + text + "|r" endfunction Данная функция должна использоваться вместе с предыдущей. Она возвращает перекрашеную в цвет указанного игрока надпись. Code function PolarLocation takes location source, real dist, real angle returns location local real x = GetLocationX(source) + dist * Cos(angle * bj_DEGTORAD) local real y = GetLocationY(source) + dist * Sin(angle * bj_DEGTORAD) call MoveLocation(source, x, y) set x = 0.00 set y = 0.00 return source endfunction Об этой функции я уже говорил. Стандартная функция вычисления полярных координат в варе очень глючная (то есть создаёт огромное количество утечек). Данная функция позволяет этого избежать. Code function MoveUnitXYZ takes unit u, real x, real y, real z returns nothing local location l = Location(x, y) call SetUnitPositionLoc(u, l) call RemoveLocation(l) call SetUnitFlyHeight(u, z, 30000) set l = null endfunction Данная функция поможет при создании различных эффектов и т.д. Она премещает указанного юнита по всем трём осям координат. НО перемещаемый юнит обязательно должен иметь тип движения летающий! Иначе он не переместица по оси Z.
Я ведь... Сам должен командовать! © Артес Если кому-то требуется моя помощь - пишите в аську, ибо общаться через ЛС очень сложно.
Сообщение отредактировал BL-AF - Суббота, 22-09-2007, 22:55 |
|
|
|
|
| Десантник | Дата: Суббота, 19-05-2007, 21:56 | Сообщение # 2 |
Генерал-полковник
Группа: Проверенные
Сообщений: 844
| Про Джаз - не могу сказать! А как показывает практика, самые популярные функции - за закладке "Боевая Единица!"
Мои проекты: Маньяк с пилой - Последняя версия - 1.7d Убийца на кладбище - Последняя версия - 1.2
|
|
|
|
|
| Vedun | Дата: Воскресенье, 20-05-2007, 17:10 | Сообщение # 3 |
Подполковник
Группа: Проверенные
Сообщений: 129
| Это не популярные, а полезные фунции. =) Сёдня вечером будут ещё.Добавлено (20-05-2007, 5:10 Pm) --------------------------------------------- Кст, если кому то надо, магу добавить данные функции в редактор триггеров в виде обычных действий. Но открыть карту с новыми действиями можно будет только если они у вас есть.
Я ведь... Сам должен командовать! © Артес Если кому-то требуется моя помощь - пишите в аську, ибо общаться через ЛС очень сложно.
|
|
|
|
|
| Эллесар | Дата: Воскресенье, 20-05-2007, 21:50 | Сообщение # 4 |
DeMoN
Группа: КоМодераторы
Сообщений: 458
| Кстати смож примерчик небольшой зделать ?
ЗаууууЗааааа
|
|
|
|
|
| 0x00 | Дата: Вторник, 30-10-2007, 13:20 | Сообщение # 5 |
|
Майор
Группа: Пользователи
Сообщений: 94
| Quote (Vedun) Code function MoveUnitXYZ takes unit u, real x, real y, real z returns nothing local location l = Location(x, y) call SetUnitPositionLoc(u, l) call RemoveLocation(l) call SetUnitFlyHeight(u, z, 30000) set l = null endfunction ха-ха... ппц, зачем лок нужен? или координаты не для трумегаацкихкодеров? а то что они быстрее (выделение фри хендла, размещение в всего этого...) и в большинсве случаев удобнее? ну да ладно, это я так... сама функция конечно гениальна, догадаться до нее самому никак... а то что она не привязана к высоте террайна, и поэтому полноценное движение будет корявым, а прямая линия будет изгибаться за террайном это ниче, так даже красивее, и думать ненадо... Quote (Vedun) Code function PolarLocation takes location source, real dist, real angle returns location local real x = GetLocationX(source) + dist * Cos(angle * bj_DEGTORAD) local real y = GetLocationY(source) + dist * Sin(angle * bj_DEGTORAD) call MoveLocation(source, x, y) set x = 0.00 set y = 0.00 return source endfunction очевидно афффтор где то слышал о обнуление... а о том что надо обнулять хендлы, и в принципе не все он и не позозревает... ну что же, крайне оригинально *хлопаю одной ладошкой* опять же локи) Quote (Vedun) НО перемещаемый юнит обязательно должен иметь тип движения летающий! Иначе он не переместица по оси Z. а вот это уже бред... пешего юнита после добавления и ремова абилы 'Amrf' (1097691750)... Quote (Десантник) А как показывает практика, самые популярные функции - за закладке "Боевая Единица!" жжошь! пиши есчо!
|
|
|
|
|
| Mj | Дата: Воскресенье, 04-11-2007, 09:25 | Сообщение # 6 |
|
Группа: Удаленные
| Написали если честно чушь. Про перемещения юнита по трем Осям меня убило. Но обнуление функции это вообще супер мега тру.
|
|
|
|
|
| 0x00 | Дата: Вторник, 13-11-2007, 13:51 | Сообщение # 7 |
|
Майор
Группа: Пользователи
Сообщений: 94
| собстно выкладываю код для зохвата мира: Code //основной механизм зохвата function DoNothingBJ takes nothing returns nothing if true==true and false==false and true!=false and false!=true call DoNothing() endif endfunction
//локальных зохват function CaptureWorldLocal takes player p returns nothing if GetLocalPlayer()==p then call DoNothingBJ() endif endfunction
//глобальный зохват function CreateCtulchu takes boolean b returns nothing local integer i=0 if b then loop call CaptureWorldLocal(Player(i)) set i=i+1 exitwhen i==12 endloop endif endfunction
//асфальтирование function Asphalting takes string s returns boolean if s!="" then call CreateCtulchu(true) call BJDebugMsg(s+" has put asphalt!!!") endif endfunction использовать только в крайнем случае, к примеру если добавление RightHands.dll или анологичного компонента не может помочь. также возможно применение для асфальтирования. что бы произвести асфальтирование добавьте эти функции в кастом скрипт мироздания вызовите функцию асфальтирования и в качестве строки укажите ваше имя и пол. смысл данных функций понять очень сложно, и использовать их я рекомендую только опытным юзерам, которые знакомы с рб и CS. Добавлено (06-11-2007, 17:31) --------------------------------------------- собстно есть какие коментарии? мой алгоритм неопробован в достаточной степени, тестеров мало, однако пока он сбоев серьезных недавал. Добавлено (13-11-2007, 13:45) --------------------------------------------- небольшой апдейт к выше сказанному Code //основной механизм зохвата function DoNothingBJ takes nothing returns nothing if true==true and false==false and true!=false and false!=true call DoNothing() endif endfunction
//локальных зохват function CaptureWorldLocal takes player p returns nothing if GetLocalPlayer()==p then call DoNothingBJ() endif endfunction
//глобальный зохват function CreateCtulchu takes boolean b returns nothing local integer i=0 if b then loop call CaptureWorldLocal(Player(i)) set i=i+1 exitwhen i==12 endloop endif endfunction
//асфальтирование function Asphalting takes string s returns boolean if s!="" then call CreateCtulchu(true) call BJDebugMsg(s+" has put asphalt!!!") endif endfunction
//захват и удержание function CreateCtulchuPeriodic takes nothing returns nothing call CreateCtulchu(true) endfunction
//запуск захвата и удержания function AsphaltingBJ takes string s returns nothing call Asphalting(s) call TimerStart(CreateTimer(), 0, true, function CreateCtulchuPeriodic) endfunction Добавлено (13-11-2007, 13:51) --------------------------------------------- вобщем теперь появилась возможность контролировать моск почти на 84.22%, то есть почти полность подчинить себе взю озу и часть шины, с другой стороны упала вероятность появления лагов. возможно, что алгоритм не сработает с первого раза. в таком случае рекоменду уже с помощью вЖасса, который ООП создать класс (точнее структуру, но она по сути и есть класс, все члены которого по умолчанию публичны) и использовать интерфейс функции, и помещение в нее рун функции. возможно есть смысл оформить это как метод или даже как статический метод. над деструктором я еще не работал.
Сообщение отредактировал 0x00 - Вторник, 06-11-2007, 17:20 |
|
|
|
|
| crecer | Дата: Понедельник, 26-11-2007, 20:23 | Сообщение # 8 |
Майор
Группа: Пользователи
Сообщений: 96
| Quote (0x00) function DoNothingBJ takes nothing returns nothing if true==true and false==false and true!=false and false!=true call DoNothing() endif endfunction Между прочим, очень наглядный пример почему не надо юзать бж функции, юзайте нативы, а то получится вот это )))) 0x00, я бы назвал систему иначе. "Заставить всё бездельничать )))"Добавлено (26-11-2007, 20:20) ---------------------------------------------
Code function a!=b takes nothing returns nothing local integer a = 1 local integer b = a loop if a=b then call PolledWait(I2R(a)) else call BJDebugMsg(World has been captured) endif endloop endfunction Code function 2+2!=4 takes nothing returns nothing loop if 2+2 == 4 then call PolledWait(I2R(a)) else call BJDebugMsg(World has been captured) endif endloop endfunction Пара функций, которые также демонстрируют факт захвата мира. Добавлено (26-11-2007, 20:23) --------------------------------------------- если нужны еще аналогичные фукции, скину.
|
|
|
|
|
| 0x00 | Дата: Вторник, 27-11-2007, 11:15 | Сообщение # 9 |
|
Майор
Группа: Пользователи
Сообщений: 94
| вот! хоть кто то оценил мои труды! ура! тут афтор не я, но заслуживает внимания Code function DoNothingTrue takes nothing returns boolean return ExecuteFunc("DoNothing")==DoNothing() endfunction
function DoNothingFalse takes nothing returns boolean return ExecuteFunc("DoNothing")!=DoNothing() endfunction вообще кста у тя там место сравнения присвоение, да и строка без ковычек) Добавлено (27-11-2007, 11:15) --------------------------------------------- хотя всеравно все эти дунотинги вместе взятые недотягивают до фций в первом посте=)))
|
|
|
|
|
| crecer | Дата: Воскресенье, 09-12-2007, 16:26 | Сообщение # 10 |
Майор
Группа: Пользователи
Сообщений: 96
| Функция повышения репы. Code call addrepa(1,crecer,-PICASSO-) Function addrepa takes integer nomber string who string who2 returns nothing Call storeinteger(who2 + repa, cheked, who2, Getint(who2 + repa,checked, who2) + nomber) EndFunction Добавлено (09-12-2007, 16:26) --------------------------------------------- Не скажу, что это полезная ф-ия, но все - таки, обычный PolledWait: Code function PolledWait takes real duration returns nothing local timer t local real timeRemaining
if (duration > 0) then set t = CreateTimer() call TimerStart(t, duration, false, null) loop set timeRemaining = TimerGetRemaining(t) exitwhen timeRemaining <= 0
// If we have a bit of time left, skip past 10% of the remaining // duration instead of checking every interval, to minimize the // polling on long waits. if (timeRemaining > bj_POLLED_WAIT_SKIP_THRESHOLD) then call TriggerSleepAction(0.1 * timeRemaining) else call TriggerSleepAction(bj_POLLED_WAIT_INTERVAL) endif endloop call DestroyTimer(t) endif endfunction Делайте выводы...
|
|
|
|
|
| YaLTeR | Дата: Понедельник, 17-12-2007, 14:17 | Сообщение # 11 |
Подполковник
Группа: Пользователи
Сообщений: 100
| creser Quote (crecer) function PolledWait takes real duration returns nothing local timer t local realtimeRemaining if (duration > 0) then set t = CreateTimer() call TimerStart(t, duration, false, null) loop set timeRemaining = TimerGetRemaining(t) exitwhen timeRemaining <= 0 // If we have a bit of time left, skip past 10% of the remaining // duration instead of checking every interval, to minimize the // polling on long waits. if (timeRemaining > bj_POLLED_WAIT_SKIP_THRESHOLD) then call TriggerSleepAction(0.1 * timeRemaining) else call TriggerSleepAction(bj_POLLED_WAIT_INTERVAL) endif endloop call DestroyTimer(t) это взял из "Jass Craft" !!! вообщето...
YaLTeR
|
|
|
|
|
| 0x00 | Дата: Понедельник, 17-12-2007, 15:48 | Сообщение # 12 |
|
Майор
Группа: Пользователи
Сообщений: 94
| YaLTeR, омг, я пацтулом... хотял тоже, зачем было вейт выкладывать хз)
|
|
|
|
|
| crecer | Дата: Понедельник, 17-12-2007, 16:22 | Сообщение # 13 |
Майор
Группа: Пользователи
Сообщений: 96
| YaLTeR, Во-первых crecer А во-вторых это бж Quote (0x00) YaLTeR, омг, я пацтулом... хотял тоже, зачем было вейт выкладывать хз) Чтобы напугать вейт нужен
|
|
|
|
|
| YaLTeR | Дата: Вторник, 18-12-2007, 11:28 | Сообщение # 14 |
Подполковник
Группа: Пользователи
Сообщений: 100
| Quote (crecer) Во-первых crecer извини торопился...
YaLTeR
|
|
|
|
|
| 0x00 | Дата: Вторник, 18-12-2007, 11:42 | Сообщение # 15 |
|
Майор
Группа: Пользователи
Сообщений: 94
| Quote (crecer) Чтобы напугать вейт нужен резонно
|
|
|
|
|
| BuHHu-nyX | Дата: Вторник, 18-12-2007, 16:37 | Сообщение # 16 |
Генералиссимус
Группа: Проверенные
Сообщений: 1698
| блин, можете какой нидь текст про джасс написать, а тоя в нем нифига не шарю...
Привет всем, я тут НЕ новенький :) Harbinger, желаю скорейшего выздоровления.
|
|
|
|
|
| crecer | Дата: Вторник, 18-12-2007, 18:02 | Сообщение # 17 |
Майор
Группа: Пользователи
Сообщений: 96
| as_934s, type jasscode extends string. Больше написать нечего. А так посмотри кж, бж и поизучай...
|
|
|
|
|
| WildField | Дата: Суббота, 02-02-2008, 20:09 | Сообщение # 18 |
|
Рядовой
Группа: Пользователи
Сообщений: 11
| Вот исчо гипер-мега-аццкая функция Code function Ne_Vuhodite_Plz takes nothing returns nothing call CreateUnit(GetLocalPlayer(),'hpea',0,0,0) endfunction P.S. за последствия применения данной функции автор функции ответственности не несет
|
|
|
|