Jump to content

Welcome to Gaming On Steroids Forums
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. This message will be removed once you have signed in.
Login to Account Create an Account
Photo

[8.17] Broken API, Bugs & Suggestions


  • This topic is locked This topic is locked
15 replies to this topic

#1
Maxxxel

Maxxxel

    The One

  • Scripts Developer
  • 1,196 posts
  • LocationGuess the right City to win 10$

-buff.type returns wrong values

 


  • 0

#2
Aristo

Aristo

    You donut

  • Moderator
  • 12,803 posts
  • LocationSomewhere over the rainbow

Warning for "normal users":

This is not the place to post stuff why your game doesn't work.

If you need help post here:

http://gamingonstero...um/159-support/


  • 0

#3
iSaga

iSaga

    Advanced Member

  • Trial Developer
  • 559 posts

This is not the place to post stuff why your game doesn't work.
If you need help post here:
http://gamingonstero...um/159-support/


Its a developer issue for fere to see. Most scripts are broken because of buff.type
  • 0

#4
AnhDuc

AnhDuc

    GoS Lover

  • Contributor
  • 3,208 posts
  • LocationVietnam

This is not the place to post stuff why your game doesn't work.

If you need help post here:

http://gamingonstero...um/159-support/

:fappa:


  • 0

#5
RMAN

RMAN

    Advanced Member

  • Contributor
  • 523 posts

Its a developer issue for fere to see. Most scripts are broken because of buff.type

 

:fappa:

Omg you two  :fappa:

Aristo wasnt saying that to Maxxxel, he was leaving that as a warning so users dont start to flood like they did here.
----------------

Some bugs:

  • Anyway, [.dir] always returns Vector(0,0,0) 
  • It seems that EXT suddenly closing issue is related to the process running out of memory.

  • 3

#6
iSaga

iSaga

    Advanced Member

  • Trial Developer
  • 559 posts

<p>

Omg you two :fappa:
Aristo wasnt saying that to Maxxxel, he was leaving that as a warning so users dont start to flood like they did here.
----------------
Some bugs:

  • Anyway, [.dir] always returns Vector(0,0,0)
  • It seems that EXT suddenly closing issue is related to the process running out of memory.

Lol hard to see that with no context lol.
  • 1

#7
Aristo

Aristo

    You donut

  • Moderator
  • 12,803 posts
  • LocationSomewhere over the rainbow

Lol hard to see that with no context lol.

I already deleted some posts :) And i sent a post about that.

 

Warning for "normal users":

 

This is not the place to post stuff why your game doesn't work.

If you need help post here:

http://gamingonstero...um/159-support/


  • 0

#8
Feretorix

Feretorix

    Administrator

  • Administrators
  • 3,177 posts

Noted, I will see if I can solve this.


  • 5

#9
iSaga

iSaga

    Advanced Member

  • Trial Developer
  • 559 posts
Buff.type is broken.
.dir is broken
Trinkets/wards are broken.(or have a different item id) returns 0.
Getping still broken
  • 0

#10
LastLuaBender

LastLuaBender

    Newbie

  • Members
  • 7 posts

missileData.owner and missileData.target are returning numbers instead of GameObjects


  • 0

#11
sikaka

sikaka

    Advanced Member

  • Trial Developer
  • 594 posts

missileData.owner and missileData.target are returning numbers instead of GameObjects

 

 

That's how it's always been. You then have to pair them up by iterating through the various heroes/minions you might be associating them with.

 

Here's a snippet from Alpha for example - just showing how I've been handling missileData in previous patches without API issues.  


function __DamageManager:OnAutoAttackMissile(missile)
	local owner = ObjectManager:GetObjectByHandle(missile.data.missileData.owner)
	local target = ObjectManager:GetHeroByHandle(missile.data.missileData.target)
	if owner and target then
		--Damage tracking logic snipped out
	end
end

function __ObjectManager:GetObjectByHandle(handle)
	for i = 1, LocalGameHeroCount() do
		local target = LocalGameHero(i)
		if target and target.handle == handle then
			return target
		end
	end
	for i = 1, LocalGameMinionCount() do
		local target = LocalGameMinion(i)
		if target and target.handle == handle then
			return target
		end
	end
	for i = 1, LocalGameTurretCount() do
		local target = LocalGameTurret(i)
		if target and target.handle == handle then
			return target
		end
	end
end

  • 1

#12
iSaga

iSaga

    Advanced Member

  • Trial Developer
  • 559 posts


That's how it's always been. You then have to pair them up by iterating through the various heroes/minions you might be associating them with.

Here's a snippet from Alpha for example - just showing how I've been handling missileData in previous patches without API issues.


function __DamageManager:OnAutoAttackMissile(missile)
	local owner = ObjectManager:GetObjectByHandle(missile.data.missileData.owner)
	local target = ObjectManager:GetHeroByHandle(missile.data.missileData.target)
	if owner and target then
		--Damage tracking logic snipped out
	end
end

function __ObjectManager:GetObjectByHandle(handle)
	for i = 1, LocalGameHeroCount() do
		local target = LocalGameHero(i)
		if target and target.handle == handle then
			return target
		end
	end
	for i = 1, LocalGameMinionCount() do
		local target = LocalGameMinion(i)
		if target and target.handle == handle then
			return target
		end
	end
	for i = 1, LocalGameTurretCount() do
		local target = LocalGameTurret(i)
		if target and target.handle == handle then
			return target
		end
	end
end

+1
  • 1

#13
Deftsu

Deftsu

    donthackourgames

  • Ex-Core Dev
  • PipPipPip
  • 4,812 posts

That's how it's always been. You then have to pair them up by iterating through the various heroes/minions you might be associating them with.
 
Here's a snippet from Alpha for example - just showing how I've been handling missileData in previous patches without API issues.  

function __DamageManager:OnAutoAttackMissile(missile)
	local owner = ObjectManager:GetObjectByHandle(missile.data.missileData.owner)
	local target = ObjectManager:GetHeroByHandle(missile.data.missileData.target)
	if owner and target then
		--Damage tracking logic snipped out
	end
end
function __ObjectManager:GetObjectByHandle(handle)
	for i = 1, LocalGameHeroCount() do
		local target = LocalGameHero(i)
		if target and target.handle == handle then
			return target
		end
	end
	for i = 1, LocalGameMinionCount() do
		local target = LocalGameMinion(i)
		if target and target.handle == handle then
			return target
		end
	end
	for i = 1, LocalGameTurretCount() do
		local target = LocalGameTurret(i)
		if target and target.handle == handle then
			return target
		end
	end
end

this actually drops performance quite a lot, handle is basically index to use with the objectManager (the 10000 size one), you didn't even have to iterate to get the object, will talk with fere about that ^^
  • 1

#14
LastLuaBender

LastLuaBender

    Newbie

  • Members
  • 7 posts

this actually drops performance quite a lot, handle is basically index to use with the objectManager (the 10000 size one), you didn't even have to iterate to get the object, will talk with fere about that ^^

 

I think there is a much larger performance issue here. Since there are no object callbacks, instead of looping the objects once in the api and having a bunch of callbacks for different events, all scripts will loop them seperatly. I don't pretend to know exactly how things like Object() and ObjectCount() are implemented but I'm pretty sure there is quite the performance improvement to be gained here. Simple create/remove events would already handle most use cases.


  • 0

#15
sikaka

sikaka

    Advanced Member

  • Trial Developer
  • 594 posts

this actually drops performance quite a lot, handle is basically index to use with the objectManager (the 10000 size one), you didn't even have to iterate to get the object, will talk with fere about that ^^

 

 

Holy god I wish that had been documented. it would have saved me SO MUCH TIME and improved performance a lot. Thanks will re-write that soon.

 

 

I think there is a much larger performance issue here. Since there are no object callbacks, instead of looping the objects once in the api and having a bunch of callbacks for different events, all scripts will loop them seperatly. I don't pretend to know exactly how things like Object() and ObjectCount() are implemented but I'm pretty sure there is quite the performance improvement to be gained here. Simple create/remove events would already handle most use cases.

 
Rito spaghetti code is mostly to blame. I agree that there should be a central way to get object related callbacks (emulated from the api, even if not 100% reliable) but I think that's unlikely to happen - a central script can be made to do that as a fallback though.  
 
I would settle for (and have requested a couple times) something as simple as an OnRecache(Minion/Hero/Etc) event that triggers when lets say the minion cache has been updated in memory...

  • 0

#16
iSaga

iSaga

    Advanced Member

  • Trial Developer
  • 559 posts
The gos overlay seems to not match actual position. Drawing, mouse clicks and spell cast range is off slightly. It will either misclick or not activate spells according to actual range


Will test further

Tested on a few resolutions. Also I have been developing on the same computer with no settings changed. Will show screenies when I can.
  • 0




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users