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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Сравнение
Сравнение
Dmitri-O_oДата: Пятница, 11 Июня 2010, 20:49:05 | Сообщение # 1
7 уровень
Группа: Проверенные
Сообщений: 254
Награды: 0
Репутация: 47
Блокировки:
У меня вопрос. Как выявить у кого больше всех дерева из всех девяти игроков?
 

SirNikolasДата: Суббота, 12 Июня 2010, 06:47:34 | Сообщение # 2
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Получится очень большое разветвление из Если/То/Иначе, в которых стоят Integer Comparison.

Добавлено (12-06-2010, 06:47)
---------------------------------------------
Сейчас сделаю.


 

СамокатДата: Суббота, 12 Июня 2010, 07:41:43 | Сообщение # 3
5 уровень
Группа: Проверенные
Сообщений: 124
Награды: 0
Репутация: 15
Блокировки:
Code

  function GetMaxWoodPlayer takes nothing returns player
   local integer a = 2
   local player MaxWooder
   if GetPlayerState(Player(0), PLAYER_STATE_RESOURCE_LUMBER) < GetPlayerState(Player(1), PLAYER_STATE_RESOURCE_LUMBER) then
    set MaxWooder = Player(0)
   else
    set MaxWooder = Player(1)
   endif
   loop
    exitwhen a >= 11
     if GetPlayerState(MaxWooder, PLAYER_STATE_RESOURCE_LUMBER) < GetPlayerState(Player(a), PLAYER_STATE_RESOURCE_LUMBER) then
     else
      set MaxWooder = Player(a)
     endif
    set a = a + 1
   endloop
   return MaxWooder
  endfunction
 

Dmitri-O_oДата: Суббота, 12 Июня 2010, 10:49:53 | Сообщение # 4
7 уровень
Группа: Проверенные
Сообщений: 254
Награды: 0
Репутация: 47
Блокировки:
Самокат, если я не ошибаюсь это как бы пример для двух игроков. Или нет?
 

SirNikolasДата: Суббота, 12 Июня 2010, 11:22:59 | Сообщение # 5
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Самокат все сделал правильно и компактно. Только я не понял, зачем нужно это:
Quote (Самокат)
Code
   if GetPlayerState(Player(0), PLAYER_STATE_RESOURCE_LUMBER) < GetPlayerState(Player(1), PLAYER_STATE_RESOURCE_LUMBER) then
    set MaxWooder = Player(0)
   else     set MaxWooder = Player(1)
   endif
Кстати, это можно сделать и без JASS'а.


 

Dmitri-O_oДата: Суббота, 12 Июня 2010, 12:13:12 | Сообщение # 6
7 уровень
Группа: Проверенные
Сообщений: 254
Награды: 0
Репутация: 47
Блокировки:
Правильно? Ну тогда извиняюсь. Я с джассом не очень дружу. Может подскажите на ГУИ?

Добавлено (12-06-2010, 12:13)
---------------------------------------------
или объясните чё с этим кодом делать :)

 

RTxДата: Суббота, 12 Июня 2010, 12:19:05 | Сообщение # 7
3 уровень
Группа: Проверенные
Сообщений: 61
Награды: 0
Репутация: 5
Блокировки:
Dmitri-O_o, зачем тебе делать это на гуи когда тебе уже сделали все на джасе, тебе только осталось засунуть это в свою карту, а именно в редакторе тригеров в самом верху есть иконка карты, нажимаешь на нее и копируешь то что лежит ниже(то что писал самокат) в открывшееся справа место.
Code
  function GetMaxWoodPlayer takes nothing returns player
    local integer a
    local player MaxWooder
     set a = 1
     set MaxWooder = Player(0)
    loop
     exitwhen a > 11
      if GetPlayerState(MaxWooder, PLAYER_STATE_RESOURCE_LUMBER) < GetPlayerState(Player(a), PLAYER_STATE_RESOURCE_LUMBER) then
      else
       set MaxWooder = Player(a)
      endif
     set a = a + 1
    endloop
    return MaxWooder
   endfunction

А дальше открываешь нужный тебе тригер и записываешь только 1 строчку udg_ХХХ=GetMaxWoodPlayer(),
где ХХХ название твоей переменной типа игрок, вот и все :)

 

Dmitri-O_oДата: Суббота, 12 Июня 2010, 12:24:25 | Сообщение # 8
7 уровень
Группа: Проверенные
Сообщений: 254
Награды: 0
Репутация: 47
Блокировки:
RTx, спасибо. А то сам бы я не разобрался =)

Сообщение отредактировал Dmitri-O_o - Суббота, 12 Июня 2010, 12:50:32
 

RTxДата: Суббота, 12 Июня 2010, 12:49:40 | Сообщение # 9
3 уровень
Группа: Проверенные
Сообщений: 61
Награды: 0
Репутация: 5
Блокировки:
да напиши ниже, это влияет только на то, что те функции которые ниже не могут вызвать функции которые выше
 

Dmitri-O_oДата: Суббота, 12 Июня 2010, 12:50:36 | Сообщение # 10
7 уровень
Группа: Проверенные
Сообщений: 254
Награды: 0
Репутация: 47
Блокировки:
RTx, когда я написал udg_Winner=GetMaxWoodPlayer() редактор начал выдавать мне ошибки при компиляции, ссылаясь на то, что какие-то функции отсутствуют.
 

RTxДата: Суббота, 12 Июня 2010, 13:05:37 | Сообщение # 11
3 уровень
Группа: Проверенные
Сообщений: 61
Награды: 0
Репутация: 5
Блокировки:
ой=) над написать вот так set udg_Winner=GetMaxWoodPlayer()
 

Dmitri-O_oДата: Суббота, 12 Июня 2010, 13:12:09 | Сообщение # 12
7 уровень
Группа: Проверенные
Сообщений: 254
Награды: 0
Репутация: 47
Блокировки:
а я думаю чё он мне пишет отсутствует функция 'set' :D :D
 

SirNikolasДата: Суббота, 12 Июня 2010, 13:18:53 | Сообщение # 13
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Dmitri-O_o)
Может, подскажете на GUI?
Нужна переменная MaxWooder типа игрок, по умолчанию равная "Игрок 1 (красный)".
For each (Integer A) from 1 to 12, do (Actions)
_Если
__(MaxWooder Древесина (текущ.)) < ((Player((Integer A))) Древесина (текущ.))
_То
__Set MaxWooder = (Player((Integer A)))
Игра - Display to (All players) the text: ((Name of MaxWooder) + имеет больше всего древесины!)


 

Dmitri-O_oДата: Суббота, 12 Июня 2010, 13:28:27 | Сообщение # 14
7 уровень
Группа: Проверенные
Сообщений: 254
Награды: 0
Репутация: 47
Блокировки:
погодите. насчёт джассового кода. Если вписывать его в код карты, то он поидее сделает проверку в начале игры. а мне нужно чтобы по истечению таймера. просто у меня баг, то что у меня дерева 3 а у бота 0 и бот почемуто выигрывает.
 

RTxДата: Суббота, 12 Июня 2010, 13:35:22 | Сообщение # 15
3 уровень
Группа: Проверенные
Сообщений: 61
Награды: 0
Репутация: 5
Блокировки:
проверку он будет делать только когда, когда ты обратишься к этой функции, то есть когда тебе нужно и в каком тебе нужно тригере ты обращаешься к нужной тебе функции, она считает то что в ней записано и заносит в нужную тебе переменную, ну а дальше делай с этой переменной что хочешь =)
 

SirNikolasДата: Суббота, 12 Июня 2010, 13:36:28 | Сообщение # 16
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Dmitri-O_o)
Если вписывать его в код карты, то он, по идее, сделает проверку в начале игры.
Нет. Он запустится тогда, когда ты из любого триггера вызовешь какую-нибудь функцию.
Quote (Нестандартный комментарий к коду)
Введите ниже нестандартный код для указанной карты. Этот текст будет включен в код карты после объявления переменных и до кода любого триггера.


 

Dmitri-O_oДата: Суббота, 12 Июня 2010, 13:37:36 | Сообщение # 17
7 уровень
Группа: Проверенные
Сообщений: 254
Награды: 0
Репутация: 47
Блокировки:
ладно, тогда объясните почему бот у которого вообще не может быть дерева выигрывает?
 

SirNikolasДата: Суббота, 12 Июня 2010, 13:43:33 | Сообщение # 18
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (SirNikolas)
(MaxWooder Древесина (текущ.)) < ((Player((Integer A))) Древесина (текущ.))
Может быть, ты поставил не "меньше", а "больше"?




Сообщение отредактировал SirNikolas - Суббота, 12 Июня 2010, 13:44:28
 

Dmitri-O_oДата: Суббота, 12 Июня 2010, 13:44:37 | Сообщение # 19
7 уровень
Группа: Проверенные
Сообщений: 254
Награды: 0
Репутация: 47
Блокировки:
SirNikolas, я делаю тем кодом, который мне дали. откуда я знаю что там поставили.
 

СамокатДата: Суббота, 12 Июня 2010, 14:41:33 | Сообщение # 20
5 уровень
Группа: Проверенные
Сообщений: 124
Награды: 0
Репутация: 15
Блокировки:
Я нашёл ошибку вот код:
Code

  function GetMaxWoodPlayer takes nothing returns player
     local integer a = 1
     local player MaxWooder = Player(0)
     loop
      exitwhen a > 11
       if GetPlayerState(MaxWooder, PLAYER_STATE_RESOURCE_LUMBER) < GetPlayerState(Player(a), PLAYER_STATE_RESOURCE_LUMBER) then
        set MaxWooder = Player(a)
       endif
      set a = a + 1
     endloop
     return MaxWooder
    endfunction  
 

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

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