- Joined
- Apr 24, 2009
- Messages
- 115
I'm no good with the trigger tags, i want to help you, but..
Seems i overloaded with many core system...
Hey Rysnt, let me know if you need any more details. Can't wait to see how it comes out.
I'm no good with the trigger tags, i want to help you, but..
Seems i overloaded with many core system...
so we just tell you what we want you to make and youll make it?
id like to see this,
you fire an arrow (shockwave) and if it hits they get a buff that makes them revealed to you at all times, if they step on a mine, another ability you have, the buff disapears and the mine blows up dealing massive damage, could you do that?
how about his, you fire an arrow in a derrection, a bird apears above you and chasses the arrow down, catches it and brings it back to you, creating a boomerang type of effect with the bird revealing vision on its eentire rout :0 you cant control the bird
I can make that for you just hang on.Suicide Attack (GUI OR MUI; NO VJASS/JASS please)
I Need a spell which deals 350/475/680 damage to targeted Hero, and half damage to Caster. It's a binding spell so enemy can't move when its targeted at him, there is small duration before the damage comes to both, so the SFX what i'm using will be able to do full animation (1.5 - 3.0 seconds) after that there is blood spilling effect on enemy and caster.
Also if the caster is interrupted, the Spell will stop, also if he dies the effect shouldn't go on
Thanks in advanc
Spell: Battle Aura
Effect: Damage + 50 for 3 minutes then a 4 minute cooldown
Spell:Stomach Slash
Effect: 100 Damage to enemy + 4 per second for 20 seconds 20 sec cooldown
spell: Persuasion
effect: turns enemy unit to players side
yesdo you mean chance?
percentage of chance?
Okay tested it, looked great you just forgot the blood effects. +Rep addedI can make that for you just hang on.
EDIT:
Hvn't tested it yet, Read the README first
Suicide Attack.w3x
SA Int
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Suicide Attack
Actions
-------- ------ --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SA_Index Equal to 0
Then - Actions
Trigger - Turn on SA Loop <gen>
Else - Actions
-------- ------ --------
Set SA_Index = (SA_Index + 1)
-------- ------ --------
Set SA_Caster[SA_Index] = (Triggering unit)
Set SA_Target[SA_Index] = (Target unit of ability being cast)
-------- ------ --------
Set SA_SFXEffect[1] = Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdl
Set SA_SFXEffect[2] = Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdl
-------- ------ --------
Set SA_Damage[1] = 350
Set SA_Damage[2] = 475
Set SA_Damage[1] = 680
-------- ------ --------
Set SA_Self_Damage[1] = 175
Set SA_Self_Damage[2] = 237
Set SA_Self_Damage[3] = 340
-------- ------ --------
Set SA_Spell_Level[SA_Index] = (Level of (Ability being cast) for (Triggering unit))
-------- ------ --------
Set SA_Damage_Time[SA_Index] = 1.50
-------- ------ --------
Unit - Pause SA_Caster[SA_Index]
Unit - Pause SA_Target[SA_Index]
-------- ------ --------
SA Loop
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
For each (Integer A) from 1 to SA_Index, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SA_Damage_Time[(Integer A)] Greater than 0.00
Then - Actions
-------- ------ --------
Set SA_Damage_Time[SA_Index] = (SA_Damage_Time[(Integer A)] - 0.03)
-------- ------ --------
Else - Actions
-------- ------ --------
Unit - Set life of SA_Caster[(Integer A)] to ((Life of SA_Caster[(Integer A)]) - (Real(SA_Self_Damage[SA_Spell_Level[(Integer A)]])))
Unit - Cause SA_Caster[(Integer A)] to damage SA_Target[(Integer A)], dealing (Real(SA_Damage[SA_Spell_Level[(Integer A)]])) damage of attack type Spells and damage type Normal
-------- ------ --------
Special Effect - Create a special effect attached to the chest of SA_Caster[(Integer A)] using SA_SFXEffect[1]
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the chest of SA_Target[(Integer A)] using SA_SFXEffect[2]
Special Effect - Destroy (Last created special effect)
-------- ------ --------
Unit - Unpause SA_Caster[(Integer A)]
Unit - Unpause SA_Target[(Integer A)]
-------- ------ --------
Set SA_Index = (SA_Index - 1)
-------- ------ --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SA_Index Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
I'll make it into a library so that you can edit it via GUI...can you make it say on the top which column shows what
one value?, the score, total killings and total deaths is lacking and Ima finish it...Also currently it only shows one value
request for this system 2 people have said they will do it and i havent gotten any reply so im going to request it here
http://www.hiveworkshop.com/forums/requests-341/item-system-request-recipies-owner-item-197714/
library MBLib initializer init
globals
//Never touch these!
private constant integer MBCOLUMN = 4
private constant integer MBROW = 24
private constant integer MBSCORECOL = 1
private constant integer MBKILLCOL = 2
private constant integer MBDEATHCOL = 3
//Configurables
private constant string MBTITLE = "AoS Multiboard System"
//non-constants
private multiboard MB
private integer array KILLS
private integer array DEATHS
private integer array TOTAL
private integer TOTAL1 = 0
private integer TOTAL2 = 0
private integer TOTAL3 = 0
private integer TOTAL4 = 0
private integer TOTAL5 = 0
private integer TOTAL6 = 0
private integer DEATHS1 = 0
private integer DEATHS2 = 0
private integer DEATHS3 = 0
private integer DEATHS4 = 0
private integer DEATHS5 = 0
private integer DEATHS6 = 0
endglobals
private function onPlayerCond takes integer pid returns boolean
return GetPlayerController(Player(pid))==MAP_CONTROL_COMPUTER or GetPlayerController(Player(pid))==MAP_CONTROL_USER
endfunction
private function onKillsUpdate takes unit u, integer pid returns nothing
set KILLS[pid] = KILLS[pid]+1
if GetOwningPlayer(u)==Player(0) or GetOwningPlayer(u)==Player(1) then
set TOTAL1=TOTAL1+1
call MultiboardSetItemValue(MultiboardGetItem(MB, pid+1, MBKILLCOL), I2S(KILLS[pid]))
call MultiboardSetItemValue(MultiboardGetItem(MB, 1, MBKILLCOL), I2S(TOTAL1))
elseif GetOwningPlayer(u)==Player(2) or GetOwningPlayer(u)==Player(3) then
set TOTAL2=TOTAL2+1
call MultiboardSetItemValue(MultiboardGetItem(MB, pid+3, MBKILLCOL), I2S(KILLS[pid]))
call MultiboardSetItemValue(MultiboardGetItem(MB, 5, MBKILLCOL), I2S(TOTAL2))
elseif GetOwningPlayer(u)==Player(4) or GetOwningPlayer(u)==Player(5) then
set TOTAL3=TOTAL3+1
call MultiboardSetItemValue(MultiboardGetItem(MB, pid+5, MBKILLCOL), I2S(KILLS[pid]))
call MultiboardSetItemValue(MultiboardGetItem(MB, 9, MBKILLCOL), I2S(TOTAL3))
elseif GetOwningPlayer(u)==Player(6) or GetOwningPlayer(u)==Player(7) then
set TOTAL4=TOTAL4+1
call MultiboardSetItemValue(MultiboardGetItem(MB, pid+7, MBKILLCOL), I2S(KILLS[pid]))
call MultiboardSetItemValue(MultiboardGetItem(MB, 13, MBKILLCOL), I2S(TOTAL4))
elseif GetOwningPlayer(u)==Player(8) or GetOwningPlayer(u)==Player(9) then
set TOTAL5=TOTAL5+1
call MultiboardSetItemValue(MultiboardGetItem(MB, pid+9, MBKILLCOL), I2S(KILLS[pid]))
call MultiboardSetItemValue(MultiboardGetItem(MB, 17, MBKILLCOL), I2S(TOTAL5))
elseif GetOwningPlayer(u)==Player(10) or GetOwningPlayer(u)==Player(11) then
set TOTAL6=TOTAL6+1
call MultiboardSetItemValue(MultiboardGetItem(MB, pid+11, MBKILLCOL), I2S(KILLS[pid]))
call MultiboardSetItemValue(MultiboardGetItem(MB, 21, MBKILLCOL), I2S(TOTAL6))
endif
endfunction
private function onDeathsUpdate takes unit u, integer pid returns nothing
set DEATHS[pid] = DEATHS[pid]+1
if GetOwningPlayer(u)==Player(0) or GetOwningPlayer(u)==Player(1) then
set DEATHS1 = DEATHS1+1
call MultiboardSetItemValue(MultiboardGetItem(MB, pid+1, MBDEATHCOL), I2S(DEATHS[pid]))
call MultiboardSetItemValue(MultiboardGetItem(MB, 1, MBDEATHCOL), I2S(DEATHS1))
elseif GetOwningPlayer(u)==Player(2) or GetOwningPlayer(u)==Player(3) then
set DEATHS2 = DEATHS2+1
call MultiboardSetItemValue(MultiboardGetItem(MB, pid+3, MBDEATHCOL), I2S(DEATHS[pid]))
call MultiboardSetItemValue(MultiboardGetItem(MB, 5, MBDEATHCOL), I2S(DEATHS2))
elseif GetOwningPlayer(u)==Player(4) or GetOwningPlayer(u)==Player(5) then
set DEATHS3 = DEATHS3+1
call MultiboardSetItemValue(MultiboardGetItem(MB, pid+5, MBDEATHCOL), I2S(DEATHS[pid]))
call MultiboardSetItemValue(MultiboardGetItem(MB, 9, MBDEATHCOL), I2S(DEATHS3))
elseif GetOwningPlayer(u)==Player(6) or GetOwningPlayer(u)==Player(7) then
set DEATHS4 = DEATHS4+1
call MultiboardSetItemValue(MultiboardGetItem(MB, pid+7, MBDEATHCOL), I2S(DEATHS[pid]))
call MultiboardSetItemValue(MultiboardGetItem(MB, 13, MBDEATHCOL), I2S(DEATHS4))
elseif GetOwningPlayer(u)==Player(8) or GetOwningPlayer(u)==Player(9) then
set DEATHS5 = DEATHS5+1
call MultiboardSetItemValue(MultiboardGetItem(MB, pid+9, MBDEATHCOL), I2S(DEATHS[pid]))
call MultiboardSetItemValue(MultiboardGetItem(MB, 17, MBDEATHCOL), I2S(DEATHS5))
elseif GetOwningPlayer(u)==Player(10) or GetOwningPlayer(u)==Player(11) then
set DEATHS6 = DEATHS6+1
call MultiboardSetItemValue(MultiboardGetItem(MB, pid+11, MBDEATHCOL), I2S(DEATHS[pid]))
call MultiboardSetItemValue(MultiboardGetItem(MB, 21, MBDEATHCOL), I2S(DEATHS6))
endif
endfunction
private function onMb takes nothing returns nothing
local integer i = 1
local integer pteam = 0
local integer pname
call MultiboardSetTitleText(MB, MBTITLE)
call MultiboardDisplay(MB, true)
call MultiboardSetColumnCount(MB, MBCOLUMN)
call MultiboardSetRowCount(MB, MBROW)
call MultiboardSetItemsWidth(MB, 0.07)
call MultiboardSetItemsStyle(MB, true, false)
loop
set pteam = pteam+1
call MultiboardSetItemValue(MultiboardGetItem(MB, i, 0), " TEAM " + I2S(pteam))
set i = i+4
exitwhen i >= MBROW
endloop
//TEAM 1
set i = 0
set pname = 1
loop
set pname = pname+1
if onPlayerCond(i) then
call MultiboardSetItemValue(MultiboardGetItem(MB, pname, 0), GetPlayerName(Player(i)))
else
call MultiboardSetItemValue(MultiboardGetItem(MB, pname, 0), "NONE")
endif
set i = i+1
exitwhen pname >= 3
endloop
//TEAM2
set i = 2
set pname = 5
loop
set pname = pname+1
if onPlayerCond(i) then
call MultiboardSetItemValue(MultiboardGetItem(MB, pname, 0), GetPlayerName(Player(i)))
else
call MultiboardSetItemValue(MultiboardGetItem(MB, pname, 0), "NONE")
endif
set i = i+1
exitwhen pname >= 7
endloop
//TEAM 3
set i = 4
set pname = 9
loop
set pname = pname+1
if onPlayerCond(i) then
call MultiboardSetItemValue(MultiboardGetItem(MB, pname, 0), GetPlayerName(Player(i)))
else
call MultiboardSetItemValue(MultiboardGetItem(MB, pname, 0), "NONE")
endif
set i = i+1
exitwhen pname >= 11
endloop
//TEAM 4
set i = 6
set pname = 13
loop
set pname = pname+1
if onPlayerCond(i) then
call MultiboardSetItemValue(MultiboardGetItem(MB, pname, 0), GetPlayerName(Player(i)))
else
call MultiboardSetItemValue(MultiboardGetItem(MB, pname, 0), "NONE")
endif
set i = i+1
exitwhen pname >= 15
endloop
//TEAM 5
set i = 8
set pname = 17
loop
set pname = pname+1
if onPlayerCond(i) then
call MultiboardSetItemValue(MultiboardGetItem(MB, pname, 0), GetPlayerName(Player(i)))
else
call MultiboardSetItemValue(MultiboardGetItem(MB, pname, 0), "NONE")
endif
set i = i+1
exitwhen pname >= 19
endloop
//TEAM 6
set i = 10
set pname = 21
loop
set pname = pname+1
if onPlayerCond(i) then
call MultiboardSetItemValue(MultiboardGetItem(MB, pname, 0), GetPlayerName(Player(i)))
else
call MultiboardSetItemValue(MultiboardGetItem(MB, pname, 0), "NONE")
endif
set i = i+1
exitwhen pname >= 23
endloop
set i = 1
loop
call MultiboardSetItemValue(MultiboardGetItem(MB, i, 1), "0")
call MultiboardSetItemValue(MultiboardGetItem(MB, i, 2), "0")
call MultiboardSetItemValue(MultiboardGetItem(MB, i, 3), "0")
set i = i+1
exitwhen i >=MBROW
endloop
call MultiboardSetItemValue(MultiboardGetItem(MB, 0, 1), "Score")
call MultiboardSetItemValue(MultiboardGetItem(MB, 0, 2), "Kills")
call MultiboardSetItemValue(MultiboardGetItem(MB, 0, 3), "Deaths")
set i = 0
loop
set i = i+4
call MultiboardSetItemValue(MultiboardGetItem(MB, i, 1), " ")
call MultiboardSetItemValue(MultiboardGetItem(MB, i, 2), " ")
call MultiboardSetItemValue(MultiboardGetItem(MB, i, 3), " ")
exitwhen i >=MBROW
endloop
endfunction
private function onMbSetup takes nothing returns boolean
call onMb()
return false
endfunction
private function onMbKillsEvent takes nothing returns boolean
local integer pid
local integer pid2
if IsUnitEnemy(GetKillingUnit(), GetTriggerPlayer()) then
set pid = GetPlayerId(GetOwningPlayer(GetKillingUnit()))+1
set pid2 = GetPlayerId(GetTriggerPlayer())+1
call onKillsUpdate(GetKillingUnit(), pid)
call onDeathsUpdate(GetTriggerUnit(), pid2)
endif
return false
endfunction
function runScores takes integer playerid, playerscore pscore returns nothing
local integer score
local integer totalscore1
local integer totalscore2
set score = GetPlayerScore(Player(playerid), pscore)
if playerid==0 or playerid==1 then
set totalscore1 = GetPlayerScore(Player(0), pscore)
set totalscore2 = GetPlayerScore(Player(1), pscore)
set TOTAL[1] = totalscore1 + totalscore2
call MultiboardSetItemValue(MultiboardGetItem(MB, playerid+2, MBSCORECOL), I2S(score))
call MultiboardSetItemValue(MultiboardGetItem(MB, 1, MBSCORECOL), I2S(TOTAL[1]))
elseif playerid==2 or playerid==3 then
set totalscore1 = GetPlayerScore(Player(2), pscore)
set totalscore2 = GetPlayerScore(Player(3), pscore)
set TOTAL[2] = totalscore1 + totalscore2
call MultiboardSetItemValue(MultiboardGetItem(MB, playerid+4, MBSCORECOL), I2S(score))
call MultiboardSetItemValue(MultiboardGetItem(MB, 5, MBSCORECOL), I2S(TOTAL[2]))
elseif playerid==4 or playerid==5 then
set totalscore1 = GetPlayerScore(Player(4), pscore)
set totalscore2 = GetPlayerScore(Player(5), pscore)
set TOTAL[3] = totalscore1 + totalscore2
call MultiboardSetItemValue(MultiboardGetItem(MB, playerid+6, MBSCORECOL), I2S(score))
call MultiboardSetItemValue(MultiboardGetItem(MB, 9, MBSCORECOL), I2S(TOTAL[3]))
elseif playerid==6 or playerid==7 then
set totalscore1 = GetPlayerScore(Player(6), pscore)
set totalscore2 = GetPlayerScore(Player(7), pscore)
set TOTAL[4] = totalscore1 + totalscore2
call MultiboardSetItemValue(MultiboardGetItem(MB, playerid+8, MBSCORECOL), I2S(score))
call MultiboardSetItemValue(MultiboardGetItem(MB, 13, MBSCORECOL), I2S(TOTAL[4]))
elseif playerid==8 or playerid==9 then
set totalscore1 = GetPlayerScore(Player(8), pscore)
set totalscore2 = GetPlayerScore(Player(9), pscore)
set TOTAL[5] = totalscore1 + totalscore2
call MultiboardSetItemValue(MultiboardGetItem(MB, playerid+10, MBSCORECOL), I2S(score))
call MultiboardSetItemValue(MultiboardGetItem(MB, 17, MBSCORECOL), I2S(TOTAL[5]))
elseif playerid==10 or playerid==11 then
set totalscore1 = GetPlayerScore(Player(10), pscore)
set totalscore2 = GetPlayerScore(Player(11), pscore)
set TOTAL[6] = totalscore1 + totalscore2
call MultiboardSetItemValue(MultiboardGetItem(MB, playerid+12, MBSCORECOL), I2S(score))
call MultiboardSetItemValue(MultiboardGetItem(MB, 21, MBSCORECOL), I2S(TOTAL[6]))
endif
endfunction
private function init takes nothing returns nothing
local trigger t1 = CreateTrigger()
local trigger t2 = CreateTrigger()
call TriggerRegisterTimerEvent(t1, 0.1, false)
call TriggerRegisterAnyUnitEventBJ(t2, EVENT_PLAYER_UNIT_DEATH)
call TriggerAddCondition(t1, Condition(function onMbSetup))
call TriggerAddCondition(t2, Condition(function onMbKillsEvent))
set MB = CreateMultiboard()
set t1 = null
set t2 = null
endfunction
endlibrary
function runScores takes integer playerid, integer score returns nothing
if playerid==0 or playerid==1 then
set TOTAL[1] = udg_Int1+udg_Int2
call MultiboardSetItemValue(MultiboardGetItem(MB, playerid+2, MBSCORECOL), I2S(score))
call MultiboardSetItemValue(MultiboardGetItem(MB, 1, MBSCORECOL), I2S(TOTAL[1]))
elseif playerid==2 or playerid==3 then
set TOTAL[2] = udg_Int3+udg_Int4
call MultiboardSetItemValue(MultiboardGetItem(MB, playerid+4, MBSCORECOL), I2S(score))
call MultiboardSetItemValue(MultiboardGetItem(MB, 5, MBSCORECOL), I2S(TOTAL[2]))
elseif playerid==4 or playerid==5 then
set TOTAL[3] = udg_Int5+udg_Int6
call MultiboardSetItemValue(MultiboardGetItem(MB, playerid+6, MBSCORECOL), I2S(score))
call MultiboardSetItemValue(MultiboardGetItem(MB, 9, MBSCORECOL), I2S(TOTAL[3]))
elseif playerid==6 or playerid==7 then
set TOTAL[4] = udg_Int7+udg_Int8
call MultiboardSetItemValue(MultiboardGetItem(MB, playerid+8, MBSCORECOL), I2S(score))
call MultiboardSetItemValue(MultiboardGetItem(MB, 13, MBSCORECOL), I2S(TOTAL[4]))
elseif playerid==8 or playerid==9 then
set TOTAL[5] = udg_Int9+udg_Int10
call MultiboardSetItemValue(MultiboardGetItem(MB, playerid+10, MBSCORECOL), I2S(score))
call MultiboardSetItemValue(MultiboardGetItem(MB, 17, MBSCORECOL), I2S(TOTAL[5]))
elseif playerid==10 or playerid==11 then
set TOTAL[6] = udg_Int11+udg_Int12
call MultiboardSetItemValue(MultiboardGetItem(MB, playerid+12, MBSCORECOL), I2S(score))
call MultiboardSetItemValue(MultiboardGetItem(MB, 21, MBSCORECOL), I2S(TOTAL[6]))
endif
endfunction