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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Действие повторяется два раза
Действие повторяется два раза
lawsonДата: Четверг, 24 Февраля 2011, 15:05:38 | Сообщение # 1
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Кароче я сделал триггер где покупаеться герой в таверне и портаеться на область куда я написал и при этом высвечиватсья имя выбраноого юнита выбранным игроком.


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

romaN-1998Дата: Четверг, 24 Февраля 2011, 15:15:02 | Сообщение # 2
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
хм... ведь у тебя два вывода...

Добавлено (24-02-2011, 15:15)
---------------------------------------------
lawson, ааа... я понял. честно, не знаю. Может elseif криво работает ? сделай тогда через if

 

lawsonДата: Четверг, 24 Февраля 2011, 15:18:21 | Сообщение # 3
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Я покупаю героя там идет проверка если раса игрока который купил героя ночные эльфы то вывести его имя. Если раса не ночные эльфы вывести его имя.
Но у меня раса ночные эльфы тоесть выполняеться одно условие и значит должно выводить один раз имя.

Добавлено (24-02-2011, 15:16)
---------------------------------------------

Quote (romaN-1998)
сделай тогда через if

Без разницы все равно выводит всегда два раза не понимаю в чем дело.

Добавлено (24-02-2011, 15:18)
---------------------------------------------
Кажеться как будто этот триггер запускаетсья два раза когда я покупаю одного героя.


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


Сообщение отредактировал lawson - Четверг, 24 Февраля 2011, 15:16:07
 

romaN-1998Дата: Четверг, 24 Февраля 2011, 15:19:22 | Сообщение # 4
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
Quote (lawson)
Я покупаю героя там идет проверка если раса игрока который купил героя ночные эльфы то вывести его имя. Если раса не ночные эльфы вывести его имя.
Но у меня раса ночные эльфы тоесть выполняеться одно условие и значит должно выводить один раз имя.

Это понятно)) не нуб в Jass.

Посмотри в РО, может у тебя стоит "Все расы" ???

 

FaionДата: Четверг, 24 Февраля 2011, 15:22:34 | Сообщение # 5
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
GetRectCenter - создает утечку.

О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас.
My Project: Nindogatari
MAL
 

romaN-1998Дата: Четверг, 24 Февраля 2011, 15:24:17 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
Faion, и ? не в этом дело, инфа 100%. Автор, посмотри в РО что стоит у него на "Раса" (героя)
 

lawsonДата: Четверг, 24 Февраля 2011, 15:26:58 | Сообщение # 7
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
"Раса" (героя)
Причем раса героя здесь?
Я ведь проверяю расу игрока а не юнита.

Добавлено (24-02-2011, 15:26)
---------------------------------------------

Quote (Faion)
GetRectCenter - создает утечку.

Эт я знаю. Но здесь оно не причем.


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

romaN-1998Дата: Четверг, 24 Февраля 2011, 15:27:02 | Сообщение # 8
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
lawson, хм... а если проверить юнита на расу.
P.S. А если у игрока Любая раса?
P.S.S. Ты когда-нибудь пользовался этим действием ? Вдруг, не работает..
 

Vova5009Дата: Четверг, 24 Февраля 2011, 15:28:08 | Сообщение # 9
8 уровень
Группа: Проверенные
Сообщений: 577
Награды: 0
Репутация: 125
Блокировки:
lawson, кстати твой код утечен)
какое событие?
 

lawsonДата: Четверг, 24 Февраля 2011, 15:28:51 | Сообщение # 10
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (romaN-1998)
А если у игрока Любая раса

Если бы было так то переменная PlayerHero записывалась бы два раза а так она записываеться один раз.Все корчое в этом триггере все правильно работает но выводиться имя юнита два раза.

Добавлено (24-02-2011, 15:28)
---------------------------------------------

Quote (Vova5009)
какое событие?

EVENT_PLAYER_UNIT_SELL


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

KartohaДата: Четверг, 24 Февраля 2011, 15:32:59 | Сообщение # 11
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
lawson, ну для начала, твой код можно сократить в два раза:
Code
local integer i = GetUnitTypeId(u)  
local player p = GetOwningPlayer(u)  
local integer l = 0  
local location loc
if (GetPlayerRace(p) == RACE_NIGHTELF) then  
set loc = GetRectCenter(gg_rct_BaseCenterSen))  
else
set loc = GetRectCenter(gg_rct_BaseCenterScor)
endif
call RemoveUnit(udg_remove[GetPlayerId(p) + 1])  
call SetUnitPositionLoc(u, loc)  
call PanCameraToTimed(GetUnitX(u), GetUnitY(u), 0)  
call SelectUnit(u, true)  
call SelectUnit(GetTriggerUnit(), false)  
set PlayerHero[GetPlayerId(p)] = u  
call DisplayTextToForce(GetPlayersAll(), "|r" + "|c00ff0303" + GetPlayerName(p) + "|r" + " has choosed " + "|r" + "|c000041ff" + GetUnitName(u) + "|r")

call RemoveUnitFromAllStock(i)  
set u = null  
set p = null
call RemoveLocation (loc)
set loc = null

Попробуй так, а потом напиши та же проблема или нет.
 

lawsonДата: Четверг, 24 Февраля 2011, 15:34:57 | Сообщение # 12
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
По началу так и было я выводил имя в коде один раз в самом конце триггера.

Вот так было. Но вре равно выдавал два раза.


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

romaN-1998Дата: Четверг, 24 Февраля 2011, 15:35:38 | Сообщение # 13
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
Kartoha, ну для начала ему надо:

если раса = НОЧНЫЕ_ЭЛЬФы
то делать то-то

иначе если раса = НЕЖИТЬ
то делать то-то

У тебя же только если ночные эльфы.

 

lawsonДата: Четверг, 24 Февраля 2011, 15:36:27 | Сообщение # 14
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (romaN-1998)
romaN-1998

У меня две расы. if PlayerRac() != RACE_NIGHT_ELF


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

KartohaДата: Четверг, 24 Февраля 2011, 15:40:36 | Сообщение # 15
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
Quote (romaN-1998)
У тебя же только если ночные эльфы.

Включай логику, всего две расы. если не одна, то другая.
lawson, ты меня не понял, у тебя одни и те же действия повторяются по два раза, тебе if/then/else зачем нужен? Только чтобы установить регион, в который перемещается герой, а ты зачем то все остальные действия туда поместил, упрости код для начала, что бы с ним работать и найти ошибку было легче.
 

lawsonДата: Четверг, 24 Февраля 2011, 15:44:23 | Сообщение # 16
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Я знаю код можно упростить(так и было изначально)
Без разница где стоит call DisplayTextToForce все равно выдает его два раза.

Добавлено (24-02-2011, 15:44)
---------------------------------------------
Ладно щас его укарачу.


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

KartohaДата: Четверг, 24 Февраля 2011, 15:46:04 | Сообщение # 17
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
Quote (lawson)
Все корчое в этом триггере все правильно работает но выводиться имя юнита два раза.

Если в игре работает что-то не так, значит в коде что-то не так. В игре выполняется только то, что ты запрограммировал, хотя сначала и может казаться что ты все сделал правильно.
 

lawsonДата: Четверг, 24 Февраля 2011, 15:47:34 | Сообщение # 18
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Вот его укаратил все равно показывает два раза. Могу скрин скинуть.


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

KartohaДата: Четверг, 24 Февраля 2011, 15:51:00 | Сообщение # 19
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
lawson, дай код всего триггера полностью, и скрин из игры. Будем ставить диагноз твоему триггеру.)
 

lawsonДата: Четверг, 24 Февраля 2011, 15:56:43 | Сообщение # 20
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Вот весь триггер щас будут скрины.

Добавлено (24-02-2011, 15:56)
---------------------------------------------
http://rghost.ru/4516024 - 1
http://rghost.ru/4516036 - 2


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


Сообщение отредактировал lawson - Четверг, 24 Февраля 2011, 15:57:22
 

PUVerДата: Четверг, 24 Февраля 2011, 16:00:11 | Сообщение # 21
Сухопутные крысы!
Группа: Модераторы
Сообщений: 4462
Награды: 8
Репутация: 1845
Блокировки:
Устное предупреждение автору за нарушение правила Название темы должно отражать суть вопроса
 

KartohaДата: Четверг, 24 Февраля 2011, 16:00:58 | Сообщение # 22
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
lawson, надо выяснить, проблема в самом триггере или конкретно в этом действии. Добавь обычное действие создания юнита, например работника. Если создастся не один работник, а два - значит проблема в самом триггере, это он выполняется дважды. Жду результата.
 

lawsonДата: Четверг, 24 Февраля 2011, 16:03:51 | Сообщение # 23
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Я проверял переменную PlayerHero которая в этом триггере должна заполняться в массив одного юнита для одного игрока так и есть все правильно работает заполняеться одни раз а вот имя высвечиваеться два раза.

Добавлено (24-02-2011, 16:03)
---------------------------------------------

Quote (PUVer)
PUVer

Я находу придумал название темы.


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

KartohaДата: Четверг, 24 Февраля 2011, 16:06:15 | Сообщение # 24
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
lawson, если ты имееш в виду это действие
Quote (lawson)
set PlayerHero[GetPlayerId(p)] = u

то переменная также запишется при двойном выполнении триггера, как записалась бы и при одинарном.
 

lawsonДата: Четверг, 24 Февраля 2011, 16:07:57 | Сообщение # 25
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Kartoha)
Kartoha

да ты прав триггер срабатывает два раза.
Я сделал так call DisplayTextToForce(GetPlayersAll(), "HELLO")
и вывелось HELLO два раза.
Ну тогда че делать?


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


Сообщение отредактировал lawson - Четверг, 24 Февраля 2011, 16:08:12
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Действие повторяется два раза
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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