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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Система не передачи денег (Убьем не балансность АОС!)
Система не передачи денег
GoJustGoДата: Четверг, 03 Сентября 2015, 23:49:56 | Сообщение # 1
4 уровень
Группа: Пользователи
Сообщений: 87
Награды: 0
Репутация: 12
Блокировки:
В моей AoS карте можно передавать деньги. я поставил через констаты на -1 передачу ресурсов и все вроде бы ничего, но с мап-хаками передавать ресурсы все равно можно и даже врагам.

Просьба и вопрос: сделайте наработку где нельзя передать деньги. я думаю тут должны знать как это сделать. очень прощу всех кто тут профи например сэр-николас и другие кто уже помогал мне.
 

SirNikolasДата: Четверг, 03 Сентября 2015, 23:59:09 | Сообщение # 2
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
В стандартной карте "Обелиск" такое реализовано. При передаче ресурсов они забираются и выводится сообщение.

 

GoJustGoДата: Пятница, 04 Сентября 2015, 00:26:39 | Сообщение # 3
4 уровень
Группа: Пользователи
Сообщений: 87
Награды: 0
Репутация: 12
Блокировки:
SirNikolas, как они нашли событие передачи ресурсов? где его найти вообще.

Добавлено (04 Сентября 2015, 00:09:38)
---------------------------------------------
я бы уже давно все сделал если бы видел где событие - игрок передаёт ресурсы(к примеру).

Добавлено (04 Сентября 2015, 00:26:39)
---------------------------------------------
нашёл вот такой ответ на этом сайте: Единственный способ пресечь передачу посредством МХ, это полный триггерный контроль количества золота игрока, в том числе постоянные проверки, имеет ли игрок золота больше чем должно у него быть.

как сделать полный контроль скиньте наработку.

 

Samedy_Дата: Пятница, 04 Сентября 2015, 06:12:24 | Сообщение # 4
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Тебе же сказали, реализованно в стандартной карте. Стандартные карты не запротекчены. Открывай и смотри.
 

GoJustGoДата: Пятница, 04 Сентября 2015, 21:29:49 | Сообщение # 5
4 уровень
Группа: Пользователи
Сообщений: 87
Награды: 0
Репутация: 12
Блокировки:
SirNikolas, как карта точно называется? The Obelisk Survival HD v4.21d ? она?

Добавлено (04 Сентября 2015, 21:29:49)
---------------------------------------------
если она то в ней с yhack для баттл нет и гарены все равно можно передавать деньги. нет никаких сообщений.

 

ВолчачкаДата: Пятница, 04 Сентября 2015, 23:34:23 | Сообщение # 6
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
Можно типа такого настрочить, но понадобятся ещё логические флаги и чуть гемограмм, чтобы ловила как элитная собака :D
Код

library FSB
       globals
           private integer array FSB_Gold
       endglobals
          
       function FSBDetector takes integer Plr, integer gold returns nothing
           local integer FilterGold = 0
           local integer pIx = 0
           local boolean b = false
           loop
               set FilterGold = GetPlayerState( Player(pIx), PLAYER_STATE_RESOURCE_GOLD )
               if FilterGold != FSB_Gold[pIx] and Plr != pIx then
                   call SetPlayerState( Player(pIx), PLAYER_STATE_RESOURCE_GOLD, FSB_Gold[pIx] )
                   set b = true
               endif
           set pIx = pIx + 1
           exitwhen pIx == 12 or b
           endloop
           if gold < 0 then    
               call BJDebugMsg("Игрок \"|cffFF0000" + GetPlayerName(Player(Plr))  +"|r\"[Тот, кто отдал деньги] и игрок \"" + GetPlayerName(Player(pIx-1))+"проводят махинации с деньгами.")
           else
               call BJDebugMsg("Игрок \"|cffFF0000" + GetPlayerName(Player(Plr)) +"|r\"[Принимаюшая сторона] и игрок \"" + GetPlayerName(Player(pIx-1))+"проводят махинации с деньгами.")
           endif
              
       endfunction
          
       function AddGoldCahe takes integer Plr, integer Gold returns nothing
           local integer FilterGold = GetPlayerState( Player(Plr), PLAYER_STATE_RESOURCE_GOLD )
           if FilterGold != FSB_Gold[Plr] then
               call SetPlayerState( Player(Plr), PLAYER_STATE_RESOURCE_GOLD, FSB_Gold[Plr] )
               call FSBDetector(Plr,FilterGold-FSB_Gold[Plr])
           endif
           set FSB_Gold[Plr] = FSB_Gold[Plr] + Gold
       endfunction
          
       function SubGoldCahe takes integer Plr, integer Gold returns nothing
           local integer FilterGold = GetPlayerState( Player(Plr), PLAYER_STATE_RESOURCE_GOLD )
           if FilterGold != FSB_Gold[Plr] then
               call SetPlayerState( Player(Plr), PLAYER_STATE_RESOURCE_GOLD, FSB_Gold[Plr] )
               call FSBDetector(Plr,FilterGold-FSB_Gold[Plr])
           endif
           set FSB_Gold[Plr] = FSB_Gold[Plr] - Gold
       endfunction
          
       function TotalChecker takes nothing returns nothing
           local integer FilterGold = 0
           local integer pIx = 0
           loop
               set FilterGold = GetPlayerState( Player(pIx), PLAYER_STATE_RESOURCE_GOLD )
               if FilterGold != FSB_Gold[pIx] then
                   call SetPlayerState( Player(pIx), PLAYER_STATE_RESOURCE_GOLD, FSB_Gold[pIx] )
                   call FSBDetector(pIx,FilterGold-FSB_Gold[pIx])
               endif
           set pIx = pIx + 1
           exitwhen pIx == 12
           endloop      
       endfunction
endlibrary

Добавлено (04 Сентября 2015, 23:34:23)
---------------------------------------------
Хотя, лучше так.

Код
library FSB
     globals
         private integer array FSB_Gold
     endglobals
      
     function FSBDetector takes integer Plr, boolean dFilter returns nothing
         local integer FilterGold = 0
         local integer pIx = 0
         local boolean b = false
         loop
             set FilterGold = GetPlayerState( Player(pIx), PLAYER_STATE_RESOURCE_GOLD )
             if FilterGold != FSB_Gold[pIx] and Plr != pIx then
                 call SetPlayerState( Player(pIx), PLAYER_STATE_RESOURCE_GOLD, FSB_Gold[pIx] )
                 set b = true
             endif
         set pIx = pIx + 1
         exitwhen pIx == 12 or b
         endloop
         if dFilter  then  
             call BJDebugMsg("Игрок \"|cffFF0000" + GetPlayerName(Player(Plr))  +"|r\"[Тот, кто отдал деньги] и игрок \"" + GetPlayerName(Player(pIx-1))+"проводят махинации с деньгами.")
         else
             call BJDebugMsg("Игрок \"|cffFF0000" + GetPlayerName(Player(Plr)) +"|r\"[Принимаюшая сторона] и игрок \"" + GetPlayerName(Player(pIx-1))+"проводят махинации с деньгами.")
         endif
          
     endfunction
      
     function AddGoldCahe takes integer Plr, integer Gold returns nothing
         local integer FilterGold = GetPlayerState( Player(Plr), PLAYER_STATE_RESOURCE_GOLD )
         if FilterGold != FSB_Gold[Plr] then
             call SetPlayerState( Player(Plr), PLAYER_STATE_RESOURCE_GOLD, FSB_Gold[Plr] )
             call FSBDetector(Plr,FilterGold-FSB_Gold[Plr] < 0)
         endif
         set FSB_Gold[Plr] = FSB_Gold[Plr] + Gold
     endfunction
      
     function SubGoldCahe takes integer Plr, integer Gold returns nothing
         local integer FilterGold = GetPlayerState( Player(Plr), PLAYER_STATE_RESOURCE_GOLD )
         if FilterGold != FSB_Gold[Plr] then
             call SetPlayerState( Player(Plr), PLAYER_STATE_RESOURCE_GOLD, FSB_Gold[Plr] )
             call FSBDetector(Plr,FilterGold-FSB_Gold[Plr] < 0)
         endif
         set FSB_Gold[Plr] = FSB_Gold[Plr] - Gold
     endfunction
      
     function TotalChecker takes nothing returns nothing
         local integer FilterGold = 0
         local integer pIx = 0
         loop
             set FilterGold = GetPlayerState( Player(pIx), PLAYER_STATE_RESOURCE_GOLD )
             if FilterGold != FSB_Gold[pIx] then
                 call SetPlayerState( Player(pIx), PLAYER_STATE_RESOURCE_GOLD, FSB_Gold[pIx] )
                 call FSBDetector(pIx,FilterGold-FSB_Gold[pIx] < 0)
             endif
         set pIx = pIx + 1
         exitwhen pIx == 12
         endloop    
     endfunction
endlibrary


Сообщение отредактировал Волчачка - Пятница, 04 Сентября 2015, 23:26:41
 

GoJustGoДата: Суббота, 05 Сентября 2015, 20:47:57 | Сообщение # 7
4 уровень
Группа: Пользователи
Сообщений: 87
Награды: 0
Репутация: 12
Блокировки:
Волчачка, я только на гуи делаю, но не нуб jass знаю что такое. когда кинул в отдельный триггер этот код карта не запустилась.вопрос: что требуется еще сделать чтобы карта запустилась с этим кодом?
 

ВолчачкаДата: Суббота, 05 Сентября 2015, 23:43:48 | Сообщение # 8
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
Цитата GoJustGo ()
Волчачка, я только на гуи делаю, но не нуб jass знаю что такое. когда кинул в отдельный триггер этот код карта не запустилась.вопрос: что требуется еще сделать чтобы карта запустилась с этим кодом?

Ну можно убрать
Код
library FSB  
        globals  
            private integer array FSB_Gold  
        endglobals


Код
endlibrary

FSB_Gold заменить на udg_FSB_Gold и кинуть всё это в нестандартный сценарий карты
и создать в переменных FSB_Gold целочисленное массив
а потом вызывать эти фунуции через Custom Script: call Add\SubGoldCahe( udg_*имя переменной*, udg_*имя переменной*) целое,целое
А в таймере прописать Custom Script: call TotalChecker ()
 

GoJustGoДата: Понедельник, 14 Сентября 2015, 23:12:24 | Сообщение # 9
4 уровень
Группа: Пользователи
Сообщений: 87
Награды: 0
Репутация: 12
Блокировки:
Волчачка, а не проще ты бы кинул наработку?
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Система не передачи денег (Убьем не балансность АОС!)
  • Страница 1 из 1
  • 1
Поиск:

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