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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » [ВАЖНО] Помощь по JASS
[ВАЖНО] Помощь по JASS
DiR94Дата: Четверг, 08 Апреля 2010, 18:46:28 | Сообщение # 376
5 уровень
Группа: Проверенные
Сообщений: 133
Награды: 0
Репутация: 59
Блокировки:
Svyaga, а вэйт можно и на таймер заменить ;)
 

SvyagaДата: Четверг, 08 Апреля 2010, 18:48:53 | Сообщение # 377
7 уровень
Группа: Проверенные
Сообщений: 472
Награды: 0
Репутация: 65
Блокировки:
DiR94, ну не вижу в этом необходимости так как вэйт слишком мал :)
 

DiR94Дата: Четверг, 08 Апреля 2010, 19:00:20 | Сообщение # 378
5 уровень
Группа: Проверенные
Сообщений: 133
Награды: 0
Репутация: 59
Блокировки:
Svyaga, убедил ^_^

Добавлено (08-04-2010, 19:00)
---------------------------------------------
Нужна помощь: сделал скилл: геров притягивает к центру указанной области, потом в центре взрыв и всех дамажит. вроде все работает. но скилл работает только 1 раз. т.е. после первого использования при использовании скилла создаются только спецэффекты(у меня они как юниты). но не работает ни притяжение, ни взрыв. вот триги:


 

H_A_PKДата: Четверг, 08 Апреля 2010, 20:18:13 | Сообщение # 379
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Quote (DiR94)
call ForGroupBJ(g, function FGA2)

:ъ найс
Quote (DiR94)
call TriggerRegisterTimerEventPeriodic(gg_trg_Styag, 0.10)

нафиг второй триггер. онли таймер ;)

Добавлено (08-04-2010, 20:18)
---------------------------------------------

Quote (DiR94)
call CreateNUnitsAtLoc(1, 'h000', p, t, bj_UNIT_FACING )

нигде не увидел удоление юнитов этих.


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

DiR94Дата: Четверг, 08 Апреля 2010, 20:44:28 | Сообщение # 380
5 уровень
Группа: Проверенные
Сообщений: 133
Награды: 0
Репутация: 59
Блокировки:
Quote (H_A_PK)
нигде не увидел удоление юнитов этих.

Quote (DiR94)
call UnitApplyTimedLife(c[3], 'BTLF', 3.00)

а это что? :)
Quote (H_A_PK)
нафиг второй триггер. онли таймер ;)

действительно ^_^
Quote (H_A_PK)
:ъ найс

всмысле? тя бж смущает? :)
 

SvyagaДата: Четверг, 08 Апреля 2010, 20:46:16 | Сообщение # 381
7 уровень
Группа: Проверенные
Сообщений: 472
Награды: 0
Репутация: 65
Блокировки:
H_A_PK, вместо критики займись исправлением :p :)
 

DiR94Дата: Четверг, 08 Апреля 2010, 20:51:10 | Сообщение # 382
5 уровень
Группа: Проверенные
Сообщений: 133
Награды: 0
Репутация: 59
Блокировки:
кстати у кого возникнут вопросы по поводу
Quote (DiR94)
 call CreateNUnitsAtLoc

говорю: у меня не ловил ГетЛастКриейтедЮнит этого юнита если я создавал его через CreateUnit %)
 

SvyagaДата: Четверг, 08 Апреля 2010, 20:52:44 | Сообщение # 383
7 уровень
Группа: Проверенные
Сообщений: 472
Награды: 0
Репутация: 65
Блокировки:
Quote (DiR94)
ГетЛастКриейтедЮнит

вообще не надо этот ужас использовать)
 

H_A_PKДата: Четверг, 08 Апреля 2010, 21:06:00 | Сообщение # 384
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Quote (DiR94)
всмысле? тя бж смущает?

Очень. Они щекотные.
При оптимизации заметил это -
local real x2 = x1 + 5*Cos(angle)
local real y2 = y1 + 5*Sin(angle)
У какого еретика ты украл эти полярки ?)

Добавлено (08-04-2010, 21:06)
---------------------------------------------

Quote (Svyaga)
вообще не надо этот ужас использовать)

set dumm1 = CreateUnitAtLoc( p,'h001', t, bj_UNIT_FACING )


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

DiR94Дата: Четверг, 08 Апреля 2010, 21:07:44 | Сообщение # 385
5 уровень
Группа: Проверенные
Сообщений: 133
Награды: 0
Репутация: 59
Блокировки:
Quote (H_A_PK)
При оптимизации заметил это - local real x2 = x1 + 5*Cos(angle) local real y2 = y1 + 5*Sin(angle) У какого еретика ты украл эти полярки ?)

сам намудрил) а что там такого? :)
 

H_A_PKДата: Четверг, 08 Апреля 2010, 21:09:46 | Сообщение # 386
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
там у тебя в Синусе и Косинусе просто угол, а должно, angle*(p/180)

проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

DiR94Дата: Четверг, 08 Апреля 2010, 21:12:12 | Сообщение # 387
5 уровень
Группа: Проверенные
Сообщений: 133
Награды: 0
Репутация: 59
Блокировки:
H_A_PK, я думал англбитвинпоинтс сразу в радианах возвращает %)

Добавлено (08-04-2010, 21:12)
---------------------------------------------
H_A_PK, но тем не менее движение работает :)

 

PocifikДата: Четверг, 08 Апреля 2010, 21:28:37 | Сообщение # 388
9 уровень
Группа: Проверенные
Сообщений: 1130
Награды: 1
Репутация: 495
Блокировки:
Svyaga, спасибо, не подскажешь как будет область в которую кастовали это что-то вроде SpellAbiliting и что-то еще, и плиз полную, мне надо написать создать боевую единицу в области в которую кастовали способность. Как создать знаю а вот в область каста не знаю.

Добавлено (08-04-2010, 21:27)
---------------------------------------------
Svyaga, пишет ошибку вот здесь

Code
call TriggerRegisterPlayerUnitEvent( gg_trg_Cruseder, Player(15), EVENT_PLAYER_UNIT_SELL )

Добавлено (08-04-2010, 21:28)
---------------------------------------------
мб потомучто нейтрально пассивный это 14, а не 15?




Сообщение отредактировал Pocifik - Четверг, 08 Апреля 2010, 21:21:20
 

SvyagaДата: Четверг, 08 Апреля 2010, 22:00:53 | Сообщение # 389
7 уровень
Группа: Проверенные
Сообщений: 472
Награды: 0
Репутация: 65
Блокировки:
Quote (Pocifik)
мб потомучто нейтрально пассивный это 14, а не 15?

дело не в этом, так как в любом случае игроков 16 в общем=) Наверное просто чтото не так написал, потому посмотрю
 

H_A_PKДата: Четверг, 08 Апреля 2010, 22:02:51 | Сообщение # 390
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Code
globals
  hashtable Hash = InitHashtable()
endglobals

function FGA2 takes nothing returns nothing
      local unit enu = GetEnumUnit()
      local real x1 = GetUnitX(enu)
      local real y1 = GetUnitY(enu)
      local location l = Location(x1,y1)
      local real angle = AngleBetweenPoints(l, t)
      local real x2 = x1 + 5*Cos(angle)
      local real y2 = y1 + 5*Sin(angle)
      local real dist = DistanceBetweenPoints(l, t)
      local real lif = GetUnitState(enu, UNIT_STATE_LIFE)
      local real nlif = lif - 4
     if IsUnitAlly(enu, p) == true and IsUnitType(enu, UNIT_TYPE_HERO) == true then
      if dist>100 then
          call SetUnitPosition(enu, x2, y2)
      endif
      call SetUnitState(enu, UNIT_STATE_LIFE, nlif)
     endif
      call RemoveLocation(l)
      set l = null
      set enu = null
endfunction

function Trig_Styag_Actions takes nothing returns nothing
      local timer t = GetExpiredTimer()
      local player p = LoadPlayerHandle(Hash, GetHandleId(t), 1)
      local location to = LoadLocationHandle(Hash, GetHandleId(t), 2)
      // я лол незнаю как значение локалок в ФорГроуп отправить <img rel="usm" src="http://warcraft3ft.info/image/smiles/smile.gif" border="0" align="absmiddle" alt=":)">
      call ForGroup(g, function FGA2)
      set t = null
      set p = null
      set to = null  
endfunction

function FGA takes nothing returns nothing
     if IsUnitAlly(GetEnumUnit(), p) == true then
      call PauseUnit(GetEnumUnit(), true)
     endif
endfunction

function FGA3 takes nothing returns nothing
  if IsUnitAlly(GetEnumUnit(), p) == true then
      local unit enumm = GetEnumUnit()
      local real life = GetUnitState(enumm, UNIT_STATE_LIFE)
      local real nlife = life - 200
      call SetUnitState(enumm, UNIT_STATE_LIFE, nlife)
      call PauseUnit(enumm, false)
      set enumm = null
  endif
endfunction

function TimeEnd takes nothing returns nothing
  local timer t = GetExpiredTimer()
  local timer t2 = LoadTimerHandle(Hash, GetHandleId(t), 4)
  local group g =  LoadGroupHandle(Hash, GetHandleId(t), 1)
  local player p = LoadPlayerHandle(Hash, GetHandleId(t), 2)
  local location to = LoadLocationHandle(Hash, GetHandleId(t), 3)
  local unit dumm1 = CreateUnitAtLoc( p,'h000', to, bj_UNIT_FACING )
      call UnitApplyTimedLife(dumm1, 'BTLF', 3.00)
      call FlushChildHashtable(Hash, t1)
      call FlushChildHashtable(Hash, t2)
      call DestroyTimer(t2)
       // я лол незнаю как значение локалок в ФорГроуп отправить <img rel="usm" src="http://warcraft3ft.info/image/smiles/smile.gif" border="0" align="absmiddle" alt=":)">
      call ForGroup(g, function FGA3)
      call RemoveLocation(t)
      call GroupClear(g)
      call DestroyGroup(g)
      call DestroyTimer(t)
      call RemoveLocation(t)
      call RemoveUnit(dumm1)
      set time = null
      set to = null
      set dumm1 = null
      set p = null
      set g = null
endfunction

function Trig_Use_Actions takes nothing returns nothing
local location t = GetSpellTargetLoc()
local unit u = GetSpellAbilityUnit()
local player p = GetOwningPlayer(u)
local group g = CreateGroup()
local timer time = CreateTimer()
local unit dumm1
local unit dumm2
local timer time2
  if GetSpellAbilityId() == 'A000' then
      call GroupEnumUnitsInRangeOfLoc(g,t,500, null)
       // я лол незнаю как значение локалок в ФорГроуп отправить <img rel="usm" src="http://warcraft3ft.info/image/smiles/smile.gif" border="0" align="absmiddle" alt=":)">
      call ForGroup(g, function FGA)
      set dumm1 = CreateUnitAtLoc( p,'h001', t, bj_UNIT_FACING )
      call UnitApplyTimedLife(dumm1, 'BTLF', 5.00)
      set dumm2 CreateUnitAtLoc( p,'h002', t, bj_UNIT_FACING )
      call UnitApplyTimedLife( dumm2, 'BTLF', 3.00)
      call EnableTrigger(gg_trg_Styag)
      call SaveGroupHandle(Hash, GetHandleId(time), 1, g)
      call SavePlayerHandle(Hash, GetHandleId(time), 2, p)
      call SaveLocationHandle(Hash, GetHandleId(time), 3, t)
      call SavePlayerHandle(Hash, GetHandleId(time2), 1, p)
      call SaveLocationHandle(Hash, GetHandleId(time2), 2, t)
      call SaveLocationHandle(Hash, GetHandleId(time), 4, time2)
      call TimerStart(time, 5, false, function TimeEnd)
      call TimerStart(time2, .10, true, function Trig_Styag_Actions)
  endif
set p = null
set u = null
set dumm1 = null
set dumm2 = null
set g = null
set t = null
set time = null
endfunction

//===========================================================================
function InitTrig_Use takes nothing returns nothing
      set gg_trg_Use = CreateTrigger()
      call TriggerRegisterAnyUnitEventBJ( gg_trg_Use, EVENT_PLAYER_UNIT_SPELL_CHANNEL )
      call TriggerAddAction( gg_trg_Use, function Trig_Use_Actions )
endfunction
  

Svyaga, плз глянь, там где коментарии доработай плз)


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

SvyagaДата: Четверг, 08 Апреля 2010, 22:21:45 | Сообщение # 391
7 уровень
Группа: Проверенные
Сообщений: 472
Награды: 0
Репутация: 65
Блокировки:
H_A_PK, омг
Лучше подожди 1-2 дня, и полностью посмотрю код, а то щас болею и могу что-то пропустить + перестановка в комнате
 

H_A_PKДата: Четверг, 08 Апреля 2010, 22:23:47 | Сообщение # 392
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
да кароче , я не знаю как отправлять через хеш значение локалок в ФорГроуп.

проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

SvyagaДата: Четверг, 08 Апреля 2010, 22:31:10 | Сообщение # 393
7 уровень
Группа: Проверенные
Сообщений: 472
Награды: 0
Репутация: 65
Блокировки:
хеш не нужен, вот:
ПРИМЕР
Допустим тебе надо добавить какую-то реальную (real) в форгрупп (ну например урон, значение к-ого зависит от чегото)
Вот что нужно сделать:
1.Меняешь:
Code
function SomeFunc takes nothing returns nothing

На это:
Code
function SomeFunc takes real R returns nothing

2.Добавляешь то что нужно в форгрупп:
Из вот этого:
Code
call ForGroup (SomeGroup, function SomeFunc)

Получится вот это:
Code
call ForGroup (SomeGroup, function SomeFunc(SomeReal))

Где SomeReal - как раз та реальная, к-ую и нужно отправить в форгрупп
3.Там где нужно подставить реальную пишешь "R", так как в "обозначении" (не знаю как правильно сказать :) ) функции она у тебя обозначается как "R"

Вот и всё впринципе, так же можно поступать с чем угодно=)

 

H_A_PKДата: Воскресенье, 11 Апреля 2010, 01:05:03 | Сообщение # 394
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
спс. + я уже поставил, блин не знал что в боолекср можно ещё аргументы вводить %/

проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

SvyagaДата: Воскресенье, 11 Апреля 2010, 01:33:10 | Сообщение # 395
7 уровень
Группа: Проверенные
Сообщений: 472
Награды: 0
Репутация: 65
Блокировки:
H_A_PK, да сам недавно на практике это узнал, когда спелл делал какой-то :)
 

H_A_PKДата: Воскресенье, 11 Апреля 2010, 01:41:19 | Сообщение # 396
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Quote (Svyaga)
H_A_PK, да сам недавно на практике это узнал, когда спелл делал какой-то :)

Хм, мне вообще говорили раньше , чтоб через ХТ, нужно цикл перед ФорГроуп ставить %/.


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

SvyagaДата: Воскресенье, 11 Апреля 2010, 01:42:22 | Сообщение # 397
7 уровень
Группа: Проверенные
Сообщений: 472
Награды: 0
Репутация: 65
Блокировки:
о_О
 

H_A_PKДата: Воскресенье, 11 Апреля 2010, 01:44:49 | Сообщение # 398
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Quote (Svyaga)
о_О

О_о <--> o_O
Мм так и будем смотреть друг на друга?
Quote (H_A_PK)
Хм, мне вообще говорили раньше , чтоб через ХТ, нужно цикл перед ФорГроуп ставить %/.

Ну типа вешать на каждого юнита в группе информацию о локалках.


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

SvyagaДата: Воскресенье, 11 Апреля 2010, 01:48:08 | Сообщение # 399
7 уровень
Группа: Проверенные
Сообщений: 472
Награды: 0
Репутация: 65
Блокировки:
H_A_PK, так причём тут локалки-то=) Если вводить локалки (если нужно) в функции, к-ая используется на каждом юните в группе, то и получится, что для каждого юнита своя локалка будет :)
В крайнем случае в том, что тебе надо было, можно было сделать глобальную переменную просто и поставить ей значение до форгрупп, а потом её в форгрупп использовать, но так как уже указан способ намного лучше, то это просто указано для сравнения :)
 

H_A_PKДата: Воскресенье, 11 Апреля 2010, 01:52:07 | Сообщение # 400
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Quote (Svyaga)
глобальную переменную

Не, но ведь тогда вся система муи идёт в ж**у.
Я не так сказал, вешать ссылку на локалку, на каждого юнита в группе, воо!

Добавлено (11-04-2010, 01:52)
---------------------------------------------

Quote (Svyaga)
но так как уже указан способ намного лучше, то это просто указано для сравнения :)

+1


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » [ВАЖНО] Помощь по JASS
Поиск:

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