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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » [JASSфак] Лекция 5. Функция GetLocalPlayer()
[JASSфак] Лекция 5. Функция GetLocalPlayer()
[DUОS]Дата: Пятница, 01 Января 2010, 21:42:46 | Сообщение # 1
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Сегодняшняя лекция написана здесь.
Я описывал там функцию H2I, знаменитую своей "Ошибкой возвращения". На 1.24 её убрали, поэтому вместо неё используем GetHandleId(). Но знать эту функцию вам не помешает.

Итак, задания:

1. Потренироваться в обращении с функцией GetLocalPlayer(). Также можно обсудить статью.
2. Карты-примеры выкладывать в этой теме. Я укажу на ошибки и начиная с этого урока оценки начну выставлять в дневник.


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


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


Сообщение отредактировал [DUОS] - Суббота, 02 Января 2010, 00:37:36
 

H_A_PKДата: Четверг, 07 Января 2010, 02:27:43 | Сообщение # 2
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
что так, темка пустует ))
Code
local integer i = 0
loop      
exiwhen i==12 then
      If (GetLocalPlaye() == i) and ( GetPlayerSlotState(GetLocalPlaye()) == PLAYER_SLOT_STATE_PLAYING )
       call CameraSetupApplyForPlayer( true, gg_cam_Camera_001, GetLocalPlaye(), 1 )
       set i = i + 1
      endif
endloop


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


Сообщение отредактировал H_A_PK - Пятница, 08 Января 2010, 15:50:33
 

AkvariumДата: Воскресенье, 10 Января 2010, 00:10:49 | Сообщение # 3
8 уровень
Группа: Проверенные
Сообщений: 581
Награды: 1
Репутация: 87
Блокировки:
Code

function Center takes nothing returns location
      return Location(GetRectCenterX(gg_rct_A), GetRectCenterY(gg_rct_A))
endfunction
function Trig_A_Actions takes nothing returns boolean
      local location l = Center()
      return IssuePointOrderLoc( gg_unit_nemi_0001, "patrol", l )
endfunction

//===========================================================================
function InitTrig_INI0D2 takes nothing returns nothing
      set gg_trg_INI0D2 = CreateTrigger(  )
      call TriggerAddAction( gg_trg_INI0D2, function Trig_A_Actions )
endfunction

Че он ругается?О_о
Лог ошибки:
Code
Undeclared variable  gg_trg_INI0D2
Undeclared variable  gg_rct_A
Undeclared variable gg_unit_nemi_0001

На карте стоит посол и область "A".
На имя триггера всегда ругается. Мб че исправить в настройках?

Есть такой же триг:

Code

function Center takes nothing returns location
     return Location(GetRectCenterX(gg_rct_A), GetRectCenterY(gg_rct_A))
endfunction
function Trig_A_Actions takes nothing returns boolean
     local location l = Center()
     return IssuePointOrderLoc( gg_unit_nemi_0002, "patrol", l )
endfunction

//===========================================================================
function InitTrig_INI takes nothing returns nothing
     set gg_trg_INI = CreateTrigger(  )
     call TriggerAddAction( gg_trg_INI, function Trig_A_Actions )
endfunction

Скопировал нижний триггер и поменял 0002 на 0001 и такая вот хрень...




Сообщение отредактировал Akvarium - Воскресенье, 10 Января 2010, 00:12:29
 

ctpaxmДата: Воскресенье, 10 Января 2010, 00:38:13 | Сообщение # 4
7 уровень
Группа: Проверенные
Сообщений: 418
Награды: 0
Репутация: 60
Блокировки:
на Undeclared variable необращай внимания... ругаться будет, но на целостность карты невлияет, и всё будет работать

Dead Girls can't say NOT!
Делаю свой ORPG проект, нужны триггерщики(JASS-еры) и идейщики...
Все подробности в ЛС


Сообщение отредактировал ctpaxm - Воскресенье, 10 Января 2010, 00:41:51
 

СорнемусДата: Воскресенье, 10 Января 2010, 01:07:53 | Сообщение # 5
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
Quote (Akvarium)
Че он ругается?О_о

Джасскрафтом проверял? Естественно будет ругаться, ибо он не обращает внимания на дефолтные переменные.
ЗЫ: А как твой триггер относиться к GetLocalPlayer?


Сообщение отредактировал Сорнемус - Воскресенье, 10 Января 2010, 01:10:47
 

H_A_PKДата: Воскресенье, 10 Января 2010, 04:22:32 | Сообщение # 6
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Сорнемус, у мну вкрно хоть ?

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

AkvariumДата: Воскресенье, 10 Января 2010, 12:26:05 | Сообщение # 7
8 уровень
Группа: Проверенные
Сообщений: 581
Награды: 1
Репутация: 87
Блокировки:
Сорнемус,
1. это триггер относящийся к дз (вспомогательный)
2. Что он просто так ругается это ясно. Но проблема что карта с первым триггером НЕ ЗАПУСКАЕТСЯ.

Добавлено (10-01-2010, 11:56)
---------------------------------------------
Ладно. Пошел делать другую версию ДЗ

Добавлено (10-01-2010, 12:26)
---------------------------------------------
Ээээээ.....
А теперь в чем ошибка?

Code
function Effect takes nothing returns effect
      return bj_lastCreatedEffect
endfunction
function Trig_A_Actions takes nothing returns nothing
local effect e
local string s
if GetLocalPlayer() == Player(1) then
set s = "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl"
elseif GetLocalPlayer() == Player(0) then
set s = "Abilities\\Spells\\Human\\Polymorph\\PolyMorphDoneGround.mdl"
endif
call AddSpecialEffect(s, GetLocationX(gg_unit_hpea_0001), GetLocationY(gg_unit_hpea_0001))
set e = Effect()   
call TriggerSleepAction(2.00)
call DestroyEffect(e)
endfunction

//===========================================================================
function InitTrig_A takes nothing returns nothing
      local integer i
      set gg_trg_A = CreateTrigger(  )
loop
      exitwhen i == 12
      call TriggerRegisterPlayerChatEvent( gg_trg_A, Player(i), "G", true )
      set i = i + 1
endloop
      call TriggerAddAction( gg_trg_A, function Trig_A_Actions )
endfunction

Возможно я туплю. Тогда сори =).
___________________________________

H_A_PK, у тя эдитора нет? Неразбирая код видно что

Quote (H_A_PK)
GetLocalPlaye()
он сочтет за ошибку.




Сообщение отредактировал Akvarium - Воскресенье, 10 Января 2010, 12:29:37
 

[DUОS]Дата: Воскресенье, 10 Января 2010, 13:26:29 | Сообщение # 8
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Akvarium,
Code
function Trig_A_Actions takes nothing returns nothing
     local effect e
     local string s
     if GetLocalPlayer() == Player(1) then
         set s = "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl"
     elseif GetLocalPlayer() == Player(0) then
         set s = "Abilities\\Spells\\Human\\Polymorph\\PolyMorphDoneGround.mdl"
     endif
     set e = AddSpecialEffect(s,GetUnitX(gg_unit_hpea_0001),GetUnitY(gg_unit_hpea_0001))
     call DestroyEffect(e)
     set e = null
endfunction

//===========================================================================
function InitTrig_A takes nothing returns nothing
     local integer i
     set gg_trg_A = CreateTrigger()
     loop
         exitwhen i == 12
         call TriggerRegisterPlayerChatEvent( gg_trg_A, Player(i), "G", true )
         set i = i + 1
     endloop
     call TriggerAddAction( gg_trg_A, function Trig_A_Actions )
endfunction

А теперь то, что я сделал:
1) GetLocationX() и GetLocationY() ты применял к gg_unit_.... Подумай, разве юнит является локацией-точкой? Оо
2) Обнуляй эффект.
3) bj_lastcreatedeffect тут не нужна. Просто сети переменную сразу как создаёшь эффект.


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


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

AkvariumДата: Воскресенье, 10 Января 2010, 13:59:50 | Сообщение # 9
8 уровень
Группа: Проверенные
Сообщений: 581
Награды: 1
Репутация: 87
Блокировки:
[DUОS], понял. Спс.

Добавлено (10-01-2010, 13:59)
---------------------------------------------
Оо
Странно...
Не работает...

Code
function Trig_A_Actions takes nothing returns nothing
      local effect e
      local string s
      if GetLocalPlayer() == Player(1) then
          set s = "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl"
      elseif GetLocalPlayer() == Player(0) then
          set s = "Abilities\\Spells\\Human\\Polymorph\\PolyMorphDoneGround.mdl"
      endif
      set e = AddSpecialEffect(s,GetUnitX(gg_unit_hpea_0001),GetUnitY(gg_unit_hpea_0001))
      call DestroyEffect(e)
      set e = null
endfunction

//===========================================================================
function InitTrig_A takes nothing returns nothing
      local integer i
      set gg_trg_A = CreateTrigger()
      loop
          exitwhen i == 12
          call TriggerRegisterPlayerChatEvent( gg_trg_A, Player(i), "G", true )
          set i = i + 1
      endloop
      call TriggerAddAction( gg_trg_A, function Trig_A_Actions )
endfunction

На карте 2 работника...
Выдает меню вара О_о


 

[DUОS]Дата: Воскресенье, 10 Января 2010, 16:48:05 | Сообщение # 10
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
gg_unit_hpea_0001

Совершенно забыл... рабочих в джассе создавать лучше триггерно.

Добавлено (10-01-2010, 16:48)
---------------------------------------------

Code
function Trig_A_Actions takes nothing returns nothing
     local effect e
     local string s
     local unit u = CreateUnit(Player(0),'hpea',2.4,3.5,270.)
     if GetLocalPlayer() == Player(1) then
         set s = "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl"
     elseif GetLocalPlayer() == Player(0) then
         set s = "Abilities\\Spells\\Human\\Polymorph\\PolyMorphDoneGround.mdl"
     endif
     set e = AddSpecialEffect(s,GetUnitX(u),GetUnitY(u))
     set e = null
     set u = null
endfunction

//===========================================================================
function InitTrig_A takes nothing returns nothing
     set gg_trg_A = CreateTrigger()
     call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(0),"G",true)
     call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(1),"G",true)
     call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(2),"G",true)
     call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(3),"G",true)
     call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(4),"G",true)
     call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(5),"G",true)
     call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(6),"G",true)
     call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(7),"G",true)
     call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(8),"G",true)
     call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(9),"G",true)
     call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(10),"G",true)
     call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(11),"G",true)
     call TriggerAddAction(gg_trg_A,function Trig_A_Actions)
endfunction


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


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

AkvariumДата: Среда, 13 Января 2010, 22:22:15 | Сообщение # 11
8 уровень
Группа: Проверенные
Сообщений: 581
Награды: 1
Репутация: 87
Блокировки:
Сдаю дз:
Code
function Trig_A_Actions takes nothing returns nothing
       local effect e
       local string s
       local integer i = GetRandomInt(0, 1)
       local unit u = CreateUnit(Player(0),'hpea',2.4,3.5,270.)
       if GetLocalPlayer() == Player(1) then
           set s = "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl"
       elseif GetLocalPlayer() == Player(0) then
           set s = "Abilities\\Spells\\Human\\Polymorph\\PolyMorphDoneGround.mdl"
       elseif GetLocalPlayer() == Player(10) then
       call KillUnit(u)
       endif
       if i == 1 then
       set e = AddSpecialEffect(s,GetUnitX(u),GetUnitY(u))
       else   
       call KillUnit(u)
       endif
       set e = null
       set u = null
endfunction

//===========================================================================
function InitTrig_A takes nothing returns nothing
       set gg_trg_A = CreateTrigger()
       call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(0),"G",true)
       call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(1),"G",true)
       call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(2),"G",true)
       call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(3),"G",true)
       call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(4),"G",true)
       call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(5),"G",true)
       call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(6),"G",true)
       call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(7),"G",true)
       call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(8),"G",true)
       call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(9),"G",true)
       call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(10),"G",true)
       call TriggerRegisterPlayerChatEvent(gg_trg_A,Player(11),"G",true)
       call TriggerAddAction(gg_trg_A,function Trig_A_Actions)
endfunction

Добавлено (11-01-2010, 16:24)
---------------------------------------------
2 версия ДЗ:

Code
function Trig_A_Actions takes nothing returns nothing
     local real minX = GetRectMinX(gg_rct_A)
     local real minY = GetRectMinY(gg_rct_A)
     local real maxX = GetRectMaxX(gg_rct_A)
     local real maxY = GetRectMaxY(gg_rct_A)
if (GetLocalPlayer() == Player(0)) then
call SetCameraBounds(minX, minY, minX, maxY, maxX, maxY, maxX, minY)
     endif
endfunction

//===========================================================================
function InitTrig_A takes nothing returns nothing
     set gg_trg_A = CreateTrigger(  )
     call TriggerAddAction( gg_trg_A, function Trig_A_Actions )
endfunction

Добавлено (13-01-2010, 22:22)
---------------------------------------------
Дуос ты где?




Сообщение отредактировал Akvarium - Понедельник, 11 Января 2010, 16:22:14
 

[DUОS]Дата: Среда, 13 Января 2010, 23:37:38 | Сообщение # 12
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (Akvarium)
call SetCameraBounds(minX, minY, minX, maxY, maxX, maxY, maxX, minY)

Akvarium,
Гораздо проще сделать

call PanCameraTo(GetRectCenterX(gg_rct_A),GetRectCenterY(gg_rct_A))


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


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

AkvariumДата: Четверг, 14 Января 2010, 16:02:11 | Сообщение # 13
8 уровень
Группа: Проверенные
Сообщений: 581
Награды: 1
Репутация: 87
Блокировки:
[DUОS], учту.

 

Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » [JASSфак] Лекция 5. Функция GetLocalPlayer()
  • Страница 1 из 1
  • 1
Поиск:

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