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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Вопрос] Multiboard
lawsonДата: Воскресенье, 18 Декабря 2011, 13:48:03 | Сообщение # 1
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Вот решив передохнуть от ИИ задумался сделать сам доску, примерно как в доте. Нашел наработку дуоса, но не могу понять с чего начать и как доску обновлять - каждые 0.1 секунды?

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


Сообщение отредактировал lawson - Воскресенье, 18 Декабря 2011, 13:48:19
 

SirNikolasДата: Воскресенье, 18 Декабря 2011, 13:54:34 | Сообщение # 2
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Убийства и смерти - в том же триггере, где они регистрируются. Уровни героев - при повышении. Золото - каждую секунду.

 

lawsonДата: Воскресенье, 18 Декабря 2011, 14:03:37 | Сообщение # 3
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
А если я хочу сделать например чтобы доска делилась на две части первая для например Sentinail вторая для Scorge

Добавлено (18 Декабрь 2011, 14:03:37)
---------------------------------------------
И как вообще лучше будет создать таблицу, глобалную или через хеш локальную?


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

SirNikolasДата: Воскресенье, 18 Декабря 2011, 14:19:12 | Сообщение # 4
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Держи. Он, правда, на GUI, но перевести не сложно. Кстати, в триггере "Иниц. сражения" лучше использовать параллельные массивы или словарь.

 

lawsonДата: Воскресенье, 18 Декабря 2011, 15:02:50 | Сообщение # 5
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Не Ник спасибо дело пошло, начал делать через структуру.
Code
struct Board
private static multiboard mb

   public static method create takes integer row, integer col, player p returns Board
   local Board this = Board.allocate()
   set this.mb = CreateMultiboardBJ(col, row, "WASAI 1.1 Board")
   call MultiboardDisplay(this.mb, GetLocalPlayer() == p)
   return this
   endmethod
     
endstruct

Добавлено (18 Декабрь 2011, 15:02:50)
---------------------------------------------
Какая функция отвечает за сворачивание и разворачивание доски? И еще как менять размер и свойства какойто ячейки?


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


Сообщение отредактировал lawson - Воскресенье, 18 Декабря 2011, 14:33:23
 

SirNikolasДата: Воскресенье, 18 Декабря 2011, 15:19:25 | Сообщение # 6
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Code
local multiboarditem mbi = MultiboardGetItem(udg_MB, 0, 0)
call MultiboardSetItemWidth(mbi, .01)
call MultiboardSetItemValue(mbi, "")
call MultiboardReleaseItem(mbi)
set mbi = null

Добавлено (18 Декабрь 2011, 15:19:25)
---------------------------------------------

Code
native MultiboardMinimize               takes multiboard lb, boolean minimize returns nothing




Сообщение отредактировал SirNikolas - Воскресенье, 18 Декабря 2011, 15:16:56
 

lawsonДата: Воскресенье, 18 Декабря 2011, 15:19:50 | Сообщение # 7
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Ага понял. Я multiboarditem вынес в переменную структуры, так как она все равно всегда будет обновляться.

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

SirNikolasДата: Воскресенье, 18 Декабря 2011, 15:20:41 | Сообщение # 8
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
А зачем через структуру? У тебя что, их много одинаковых будет?

 

lawsonДата: Воскресенье, 18 Декабря 2011, 15:23:25 | Сообщение # 9
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Ни че не понимаю, меняю свойства первой ячейки первой строки, а меняются свойства всех ячеек второй строки, как это?

Добавлено (18 Декабрь 2011, 15:23:25)
---------------------------------------------
Quote (SirNikolas)
А зачем через структуру? У тебя что, их много одинаковых будет?

Не пфф мне так удобней будет следит за ней.


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


Сообщение отредактировал lawson - Воскресенье, 18 Декабря 2011, 15:24:35
 

SirNikolasДата: Воскресенье, 18 Декабря 2011, 15:25:24 | Сообщение # 10
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Не юзай BJ. Первая строка и первый столбец в native - номера 0.

 

lawsonДата: Воскресенье, 18 Декабря 2011, 15:35:33 | Сообщение # 11
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
А как мне поменять именно свойтсва Одной ячейки а не целой строки или столбца?

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

SirNikolasДата: Воскресенье, 18 Декабря 2011, 15:36:15 | Сообщение # 12
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Так, как я написал в сообщении №6.

 

lawsonДата: Воскресенье, 18 Декабря 2011, 15:50:19 | Сообщение # 13
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Какой адрес должна иметь иконка чтобы приминить ее к ячейке?

Добавлено (18 Декабрь 2011, 15:50:19)
---------------------------------------------
И как убрать этот дуратский глаз?


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


Сообщение отредактировал lawson - Воскресенье, 18 Декабря 2011, 16:00:39
 

SirNikolasДата: Воскресенье, 18 Декабря 2011, 17:41:28 | Сообщение # 14
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Любой. Ты его и должен указать.
Quote (lawson)
И как убрать этот дуратский глаз?
MultiboardSetItemStyle.


 

lawsonДата: Воскресенье, 18 Декабря 2011, 18:01:46 | Сообщение # 15
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (SirNikolas)
Любой. Ты его и должен указать.

Нет я вот пишу адрес, а он мне ошибку. "UI\Glues\ScoreScreen\scorescreen-hero-bansheeranger.blp" Как правильно указать?


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

HexingДата: Воскресенье, 18 Декабря 2011, 18:30:41 | Сообщение # 16
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
lawson, не забываем писать два \\ вместо одного

 

lawsonДата: Понедельник, 19 Декабря 2011, 17:38:17 | Сообщение # 17
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Люди поскажите алгоритм подсчитки времени в формате 00:00. Вот написал метод а работает не корректно что не так?
Code
public method SelectTime takes nothing returns nothing
    if (this.seconds > 59) then
    set this.seconds = 0
    this.minutes++
    endif
    if (this.seconds < 10) then
    call MultiboardSetTitleText(this.mb, I2S(this.minutes) + ":" + "0" + I2S(this.seconds) + " " + this.titel)
    else
    call MultiboardSetTitleText(this.mb, I2S(this.minutes) + ":" + I2S(this.seconds) + " " + this.titel)
    endif
   endmethod

Увеличиваю this.second++ каждую секунду.


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


Сообщение отредактировал lawson - Понедельник, 19 Декабря 2011, 17:45:01
 

HexingДата: Понедельник, 19 Декабря 2011, 18:49:15 | Сообщение # 18
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Quote (lawson)
Вот написал метод а работает не корректно что не так?

а поконкретнее?
и желательно побольше кода, тут ошибок не вижу


 

lawsonДата: Понедельник, 19 Декабря 2011, 19:29:24 | Сообщение # 19
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Хмм хорошо, просто если следовать коду то надпись должна принимать вид: минуты:секунды - 0:05через 5 секунд после запуска, но она почему то стает вот такой 0:50 через 5 секунд, что не так не могу понять.
Code
integer seconds = 0       
integer minutes = 0

Метод SelectTime запускаю каждую секунду через периодический триггер по добавлению золота.
Code
public method SelectTime takes nothing returns nothing
       this.seconds++
       if (this.seconds > 59) then
       set this.seconds = 0
       this.minutes++
       endif
       if (this.seconds < 10) then
       call MultiboardSetTitleText(this.mb, I2S(this.minutes) + ":" + "0" + I2S(this.seconds) + " " + "WASAI 1.1 Board")
       else
       call MultiboardSetTitleText(this.mb, I2S(this.minutes) + ":" + I2S(this.seconds) + " " + "WASAI 1.1 Board")
       endif
       endmethod


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


Сообщение отредактировал lawson - Понедельник, 19 Декабря 2011, 19:32:12
 

SirNikolasДата: Понедельник, 19 Декабря 2011, 19:36:13 | Сообщение # 20
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (lawson)
if (this.seconds >= 59) then
>= 60
А, уже исправил.
Quote (lawson)
+ ":" + "0" +
+ ":0" +
Здесь по-прежнему ошибок нет. Слишком мало данных. Скажи, каким становится текст через 10 секунд? Через 15?




Сообщение отредактировал SirNikolas - Понедельник, 19 Декабря 2011, 19:37:52
 

lawsonДата: Понедельник, 19 Декабря 2011, 19:58:08 | Сообщение # 21
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (SirNikolas)
текст через 10 секунд

1:40 вот такой. Не могу понять в чем беда?!
Quote (SirNikolas)
Слишком мало данных
Хмм все сказал, вот как вызываю метод в триггере по добавлению золота:call board.SelectTime(). Вот я скидываю саму урезанную структуру касающуюся только таймера.

Code
struct Board
private static multiboard mb
integer seconds = 0     
integer minutes = 0

public method SelectTime takes nothing returns nothing
     this.seconds++
     if (this.seconds >= 60) then
     set this.seconds = 0
     this.minutes++
     endif
     if (this.seconds < 10) then
     call MultiboardSetTitleText(this.mb, I2S(this.minutes) + ":" + "0" + I2S(this.seconds) + " " + "WASAI 1.1 Board")
     else
     call MultiboardSetTitleText(this.mb, I2S(this.minutes) + ":" + I2S(this.seconds) + " " + "WASAI 1.1 Board")
     endif
     endmethod

endstruct

Добавлено (19 Декабрь 2011, 19:52:12)
---------------------------------------------
Через 15: 2:30

Добавлено (19 Декабрь 2011, 19:58:08)
---------------------------------------------
хмм кароче сейчас напишу чтобы выводило секунды , хочу посмотреть как оно увеличивается. Действительно ли оно увеличиватся на 10 и тогда метод все правильно делает или же проблема в методе.


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


Сообщение отредактировал lawson - Понедельник, 19 Декабря 2011, 19:50:56
 

oleg_best_olegДата: Понедельник, 19 Декабря 2011, 19:59:48 | Сообщение # 22
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
lawson, я вообще делал наоборот:
Если секунды больше 10
То Минуты + : + Секунды
Иначе Минуты + :0 + Секунды

Попробуй так, может поможет...
 

lawsonДата: Понедельник, 19 Декабря 2011, 20:02:20 | Сообщение # 23
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Да все Ник все я понял в чем проблема сам триггер на увеличение золота имеет цикл а я не заметил 10-ый цикл и вставил туда запуск метода и всегда выводило 1-10 потом снова 10-20 потом каждую секунду 10 раз вызывался метод. Вот сам триггер: Мда как всегда все дело в невнимательности. :)
loop
set gps = GetPlayerState(Player(i), PLAYER_STATE_RESOURCE_GOLD)
exitwhen i > 9
call SetPlayerState(Player(i), PLAYER_STATE_RESOURCE_GOLD, gps + 1)
call board.SelectTime() - я его вызывал 10 раз.
call board.SelectItem(GetPlayerId(Player(i)) + 1, 2, "|r" + "|c00ffff00" + I2S(GetPlayerState(Player(i), PLAYER_STATE_RESOURCE_GOLD)) + "|r")
set i = i + 1
endloop
Хехех все ребята спасибо за внимание.


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


Сообщение отредактировал lawson - Понедельник, 19 Декабря 2011, 20:03:16
 

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

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