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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
проверте работоспособность
ReddalerznДата: Среда, 06 Июля 2011, 23:52:17 | Сообщение # 1
4 уровень
Группа: Проверенные
Сообщений: 89
Награды: 0
Репутация: 4
Блокировки:
моё первый опыт на жассе... не могу проверить работает или нет, ворлд ругается если даж триггер инициализации перевести в жасс, а жнгп не хочет работать с моим варом...
писал через JassCraft.
смысл в том, что кто-либо получая урон имеет 25-и процентный шанс заполучить кровотечение на 10 секунд.
Code
function BloodingAct takes integer random, integer time returns nothing
   set random == GetRandomInt( 1, 4)      
    if (random == 4) then
     call AddSpecialEffectTargetUnitBJ( origin, damaged, beastmasterblood.mdl)
     call StartTimerBJ( blood, true, 1)  
      if GetExpiredTimer == blood and time != 10 then
       set time == time + 1
       call SetUnitLifeBJ( damaged, UNIT_STATE_LIFE - GetRandomReal( 1, 10) )
       else
       set time == 0
       call DestroyTimerBJ( blood)
      endif
      call DestroyEffect( bj_lastCreatedEffect)
    else
     call DoNothing
    endif
endfunction

//========================================================================
function Blooding takes unit damaged returns nothing
   set gg_trg_Blooding = CreateTrigger()
   call TriggerRegisterUnitEvent( gg_trg_Blooding, damaged, EVENT_UNIT_DAMAGED )
   call TriggerAddAction( gg_trg_Blooding, function BloodingAct )
endfunction

Добавлено (06-07-2011, 23:52)
---------------------------------------------
и если можно укажите на ошибки

 

lawsonДата: Четверг, 07 Июля 2011, 01:21:27 | Сообщение # 2
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Reddalerzn)
DestroyTimerBJ

Плохо
Quote (Reddalerzn)
AddSpecialEffectTargetUnitBJ

Еще плохо
Quote (Reddalerzn)
SetUnitLifeBJ

И еще не используй Blizaard функции тоесть функции с BJ они практически все дают утечки.
У тебя что все переменные глобальные?
Else DoNothing абсолютно не нужен.
Quote (Reddalerzn)
GetExpiredTimer

ЧТо это? код не понятен.
Откуда я буду знать что код работает если я не знаю значения всех переменных сделай через локальные переменные так будет понятней.

Добавлено (07-07-2011, 00:52)
---------------------------------------------
origin если это не переменная то указываеться в кавычках.

Добавлено (07-07-2011, 00:53)
---------------------------------------------
Quote (Reddalerzn)
моё первый опыт на жассе

Кароче практически все не правильно начиная сначала. Такие триггеры обычно делаються через хеш если в них присутсвуют таймеры.
Хотя для начала довольно таки не плохо, все с чего то начинали. Совет почитай статьи про утечки и переменные.

Добавлено (07-07-2011, 00:56)
---------------------------------------------
Сейчас я сделаю правильно тебе.

Добавлено (07-07-2011, 01:21)
---------------------------------------------
Вот как должно быть...
Code
function Special takes nothing returns nothing
call DestroyEffect(LoadEffectHandle(Hash, GetHandleId(GetExpiredTimer()), 0))
call DestroyTimer(GetExpiredTimer())
call FlushChildHashtable(Hash, GetHandleId(GetExpiredTimer()))
call DestroyTimer(GetExpiredTimer())
endfunction

function Trig_Blood_Actions takes nothing returns nothing
local integer random = GetRandomInt(1, 100)
local timer t
local effect e       
       if (random <= 25) then       
       set t = CreateTimer()
       set e = AddSpecialEffectTarget("Objects\\Spawnmodels\\Critters\\Albatross\\CritterBloodAlbatross.mdl", GetTriggerUnit(), "origin")
       call SetUnitState(GetTriggerUnit(), UNIT_STATE_LIFE, GetUnitState(GetTriggerUnit(), UNIT_STATE_LIFE) - 10)
       call TimerStart(t, 10, false, function Special)
       call SaveEffectHandle(Hash, GetHandleId(t), 0, e)
       endif
set t = null
set e = null
endfunction

//===========================================================================
function InitTrig_Blood takes nothing returns nothing
          set gg_trg_Blood = CreateTrigger(  )
          call TriggerRegisterUnitEvent( gg_trg_Blood, "любой юнит", EVENT_UNIT_DAMAGED )
          call TriggerAddAction( gg_trg_Blood, function Trig_Blood_Actions )
endfunction


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Четверг, 07 Июля 2011, 21:04:03
 

BinGOДата: Четверг, 07 Июля 2011, 02:43:15 | Сообщение # 3
Группа: Модераторы
Сообщений: 2906
Награды: 8
Блокировки:
Quote (lawson)
call DestroyTimer(GetExpiredTimer())

Quote (lawson)
call FlushChildHashtable(Hash, GetHandleId(GetExpiredTimer()))

Quote (lawson)
call DestroyTimer(GetExpiredTimer())

Это что? -.-
Сначала чистится ХТ, затем удаляется таймер. Первый дестрой в топку.
 

lawsonДата: Четверг, 07 Июля 2011, 08:34:01 | Сообщение # 4
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
А точно я его два раза удаляю хмм не заметил, торопился просто.

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

ReddalerznДата: Четверг, 07 Июля 2011, 11:12:45 | Сообщение # 5
4 уровень
Группа: Проверенные
Сообщений: 89
Награды: 0
Репутация: 4
Блокировки:
Code
call FlushChildHashtable(Hash, GetHandleId(GetExpiredTimer()))

Code
call SaveEffectHandle(Hash, GetHandleId(t), 0, e)


жасскрафт не знает этих команд

Добавлено (07-07-2011, 11:12)
---------------------------------------------
вопросик, как указать именно ЛЮБОГО юнита в триггере?

 

SirNikolasДата: Четверг, 07 Июля 2011, 14:27:12 | Сообщение # 6
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Reddalerzn)
жасскрафт не знает этих команд
JassCraft много чего не знает, главное, чтобы они были в common.j, лежащем в его папке (а они там есть).
Quote (Reddalerzn)
как указать именно ЛЮБОГО юнита в триггере?
Заюзать вот эту систему.


 

FkoFFДата: Четверг, 07 Июля 2011, 15:28:39 | Сообщение # 7
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (Reddalerzn)
жасскрафт не знает этих команд

знает, только не выделяет их цветом, обозначающим родные функции (потому как в common.j они очень странно прописаны, и там название в духе SaveReal╒╒╒╒╒


 

[DUОS]Дата: Четверг, 07 Июля 2011, 17:24:54 | Сообщение # 8
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (FkoFF)
╒╒╒╒╒

Ну... В этом духе где-то, там квадратики.
B1nGO,
Имхо GetExpiredTimer() надо отправить в локальную переменную.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

  • Страница 1 из 1
  • 1
Поиск:

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