Пятница, 06.03.2026, 09:18:38
Приветствую Вас Гость | RSS
Сайт Anufisа
Главная | Сумма урона - Форум | Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Сумма урона
Offline Serious07Дата: Пятница, 17.07.2009, 12:48:02 | Сообщение # 1

Сообщений: 87
Репутация: 24
Никак не могу понять как сделать сумму нанесённого урона одному игроку тоесть:

Игрок А наносит урон Игроку B И урон наненёсённый игроку B складывается в целочисленную переменную schot[1]. Немогу понять как сделать желательно сделайте небольшой пример зарание спасибо

Сообщение отредактировал Serious07 - Пятница, 17.07.2009, 13:16:39
 
Offline anufis-oldДата: Пятница, 17.07.2009, 13:30:32 | Сообщение # 2

Сообщений: 5085
Репутация: 54
function H2I takes handle h returns integer
return h
return 0
endfunction

function I2U takes integer i returns unit
return i
return null
endfunction

function StoreObject takes handle h, string key, integer val returns nothing
call StoreInteger(udg_cache, I2S(H2I(h)), key, val)
endfunction

function StoreRealH takes handle h, string key, real val returns nothing
call StoreReal(udg_cache, I2S(H2I(h)), key, val)
endfunction

function RestoreObject takes handle h, string key returns integer
return GetStoredInteger(udg_cache, I2S(H2I(h)), key)
endfunction

function RestoreReal takes handle h, string key returns real
return GetStoredReal(udg_cache, I2S(H2I(h)), key)
endfunction

function ReleaseObject takes handle h returns nothing
call FlushStoredMission(udg_cache, I2S(H2I(h)))
endfunction

function CalcExp takes nothing returns nothing
local trigger t=GetTriggeringTrigger()
local unit attacked = I2U(RestoreObject(t,"u1"))
local real HP=RestoreReal(t,"r")
local unit u=I2U(RestoreObject(t,"u2"))
set udg_schot[1] =udg_schot[1]+HP-GetUnitStateSwap(UNIT_STATE_LIFE, attacked)
call ReleaseObject(t)
call DestroyTrigger(t)
set t=null
set attacked=null
set u=null
endfunction

function InitCalc takes nothing returns nothing
local unit attacked = GetAttackedUnitBJ()
local real HP=GetUnitStateSwap(UNIT_STATE_LIFE, attacked)
local unit u=GetAttacker()
local trigger t=CreateTrigger()
call TriggerRegisterUnitLifeEvent( t, attacked, LESS_THAN, HP )
call TriggerAddAction(t, function CalcExp )
call StoreObject(t,"u1",H2I(attacked))
call StoreRealH(t,"r",HP)
call StoreObject(t,"u2",H2I(u))
set attacked=null
set u=null
set t=null
endfunction

function Trig_Expirience_Actions takes nothing returns nothing
endfunction

//===========================================================================
function InitTrig_Expirience takes nothing returns nothing
set gg_trg_Expirience = CreateTrigger( )
call TriggerRegisterPlayerUnitEventSimple( gg_trg_Expirience, Player(PLAYER_NEUTRAL_AGGRESSIVE), EVENT_PLAYER_UNIT_ATTACKED )//Тут ставишь игрока, юнит которого должен быть атакован вместо PLAYER_NEUTRAL_AGGRESSIVE
call TriggerAddAction( gg_trg_Expirience, function InitCalc )
endfunction

 
Offline anufis-oldДата: Пятница, 17.07.2009, 13:33:38 | Сообщение # 3

Сообщений: 5085
Репутация: 54
Только это будет работать, если все игроки атакуют игрока B. Чтобы только игрок A, добавляй условие на проверку атаковавшего.
 
Offline bobok1Дата: Пятница, 17.07.2009, 13:35:06 | Сообщение # 4

Пацанчик
Сообщений: 2234
Репутация: 86
Quote (Serious07)
целочисленную переменную schot[1]

Тебе нужно точно целочислитель-перемменую? Если да - читай вверх.

Если нет, то нужно переменять переменную на массивно-реальной. (Реальная) И:

Установить schot[1] = schot[1] + (реакция на событие) Полученные повреждение

Сообщение отредактировал bobok1 - Пятница, 17.07.2009, 13:36:44
 
Offline anufis-oldДата: Пятница, 17.07.2009, 13:36:06 | Сообщение # 5

Сообщений: 5085
Репутация: 54
Quote (bobok1)
(реакция на событие) Полученные повреждение

Пример триггера, если любой юнит игрока А атакует любого юнита игрока B
 
Offline bobok1Дата: Пятница, 17.07.2009, 13:37:56 | Сообщение # 6

Пацанчик
Сообщений: 2234
Репутация: 86
Serious07, в дальнейшом, пиши не сюда, а туда:
http://anufis.ucoz.ru/forum/8-75-1
 
Offline anufis-oldДата: Пятница, 17.07.2009, 13:38:01 | Сообщение # 7

Сообщений: 5085
Репутация: 54
А, ну естественно надо не забыть инициализировать кеш.
 
Offline syxarikДата: Пятница, 31.07.2009, 00:07:43 | Сообщение # 8

Сообщений: 1516
Репутация: 8
думаю вопрос решён и можно закрыть тему. спасибо ануфису и бобоку за помощь) мне ето тож понадобится в будущем


Если на нашем сайте вам надоела реклама, тыкай сюда!!!!11111адын адын
 
Offline strangerДата: Пятница, 31.07.2009, 10:07:01 | Сообщение # 9

Сообщений: 2098
Репутация: 45
Quote (syxarik)
думаю вопрос решён и можно закрыть тему. спасибо ануфису и бобоку за помощь) мне ето тож понадобится в будущем

да чё ты всё закрываешь,мб ктонить ещё прийдёт и ему будет непонятно


ник гарене - Tagort
 
Offline VitinariДата: Пятница, 31.07.2009, 16:26:10 | Сообщение # 10

Сообщений: 2361
Репутация: 92
да, закрывать темы просто так тупо. Зачем создавать новую, если есть старая...

Этим цветом я исправляю и дополняю сообщения.
Skype -----> LordVitinari
Администратор имеет все возможные права, два невозможных и одно невероятное. ©
 
Offline syxarikДата: Воскресенье, 02.08.2009, 17:36:59 | Сообщение # 11

Сообщений: 1516
Репутация: 8
ок) начал уже разбираться с суммой урона хд


Если на нашем сайте вам надоела реклама, тыкай сюда!!!!11111адын адын
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2026

Сделать бесплатный сайт с uCoz