Re: Streamer Plugin -
ball - 06.05.2017
E_STREAMER_EXTRA_ID could be array, could be integer. Are you sure it happens in that function? Add some debug, print the object's id and ensure that this object exist.
Re: Streamer Plugin -
Riddick94 - 06.05.2017
Quote:
Originally Posted by ball
E_STREAMER_EXTRA_ID could be array, could be integer. Are you sure it happens in that function? Add some debug, print the object's id and ensure that this object exist.
|
Of course the object MAY or may NOT exist. The function is being called every some time using SetPlayerTimerEx - the timer is being called JUST ONCE player is spawned (not every respawn though).
So, I have commented the line where the timer is being called for player in OnPlayerSpawn and the warning message doesn't appear in the console.
So, the issue appears to be in the "OnPlayerLookAt" code. As I have said before, I have added IF statement validations to check if the object exists or not for the player so it SHOULDN'T come up with anything like that in the console.
Some more code, if you'd like:
native
pawn Код:
stock GetPlayerCameraDynamicObject(playerid)return Streamer_GetItemStreamerID(playerid, STREAMER_TYPE_OBJECT, GetPlayerCameraTargetObject(playerid));
OnPlayerLookAt
pawn Код:
new lookingat_objectid = GetPlayerCameraDynamicObject(playerid);
if(IsValidDynamicObject(lookingat_objectid))
{
if(PlayerData[playerid][E_PLAYER_LOOKING_AT_ITEMID] == INVALID_OBJECT_ID)
{
new object_data[10];
Streamer_GetArrayData(STREAMER_TYPE_OBJECT, lookingat_objectid, E_STREAMER_EXTRA_ID, object_data, sizeof(object_data));
new itemid = object_data[0];
if(ItemData[itemid][E_ITEM_TYPE] != ITEM_TYPE_NONE)
{
if(Streamer_IsInArrayData(STREAMER_TYPE_OBJECT, lookingat_objectid, E_STREAMER_EXTRA_ID, INVALID_3DTEXT_ID))
{
PlayerData[playerid][E_PLAYER_LOOKING_AT_ITEMID] = lookingat_objectid;
object_data[9] = _:CreateDynamic3DTextLabel(ItemData[itemid][E_ITEM_NAME], COLOR_NICK, Float:object_data[3], Float:object_data[4], Float:object_data[5], 2.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, false, object_data[6], object_data[7], playerid, 5.0);
Streamer_SetArrayData(STREAMER_TYPE_OBJECT, lookingat_objectid, E_STREAMER_EXTRA_ID, object_data, sizeof(object_data));
Streamer_Update(playerid, STREAMER_TYPE_3D_TEXT_LABEL);
}
}
}
}
else
{
if(PlayerData[playerid][E_PLAYER_LOOKING_AT_ITEMID] != INVALID_OBJECT_ID)
{
new object_data[10];
Streamer_GetArrayData(STREAMER_TYPE_OBJECT, PlayerData[playerid][E_PLAYER_LOOKING_AT_ITEMID], E_STREAMER_EXTRA_ID, object_data, sizeof(object_data));
if(Streamer_IsInArrayData(STREAMER_TYPE_OBJECT, PlayerData[playerid][E_PLAYER_LOOKING_AT_ITEMID], E_STREAMER_EXTRA_ID, object_data[9]))
{
DestroyDynamic3DTextLabel(Text3D:object_data[9]);
Streamer_Update(playerid, STREAMER_TYPE_3D_TEXT_LABEL);
object_data[9] = INVALID_3DTEXT_ID;
Streamer_SetArrayData(STREAMER_TYPE_OBJECT, PlayerData[playerid][E_PLAYER_LOOKING_AT_ITEMID], E_STREAMER_EXTRA_ID, object_data, sizeof(object_data));
}
PlayerData[playerid][E_PLAYER_LOOKING_AT_ITEMID] = INVALID_OBJECT_ID;
}
}
Re: Streamer Plugin -
rt-2 - 07.05.2017
Quote:
Originally Posted by Crayder
It is in the wiki, the streamer wiki. It's on GitHub.
|
No it's not in the wiki (like I said), the function is in the native list, but no parameters description is given, but on this page it was given before. So the information was available but is not anymore.
Re: Streamer Plugin -
coool - 07.05.2017
Quote:
Originally Posted by rt-2
No it's not in the wiki (like I said), the function is in the native list, but no parameters description is given, but on this page it was given before. So the information was available but is not anymore.
|
https://github.com/samp-incognito/sa...tives-(Objects)
Re: Streamer Plugin -
IstuntmanI - 07.05.2017
Quote:
Originally Posted by AbyssMorgan
E_STREAMER_EXTRA_ID is integer not array
|
E_STREAMER_EXTRA_ID internally is a "std::vector< int >" . So, technically, it is an array (1D/vector, of integers), not an integer, but it can be used as both because Incognito added the possibility to use it with the natives manipulating just an integer (
Streamer_SetIntData and
Streamer_GetIntData) by actually setting/getting only the first value in that vector of extra integers (you can check
getFirstValueInContainer and
setFirstValueInContainer in the source code).
--------------------------
Quote:
Originally Posted by Riddick94
<>
|
Ok, so here's my try to help you. In your first post you didn't post everything. The first "if" line and the whole code block looks ok ( you are even checking first if it is valid, but this means that
PlayerData[playerid][E_PLAYER_LOOKING_AT_ITEMID] will NEVER be set to INVALID_OBJECT_ID (actually, it would be 0, because Streamer_GetItemStreamerID returns 0 if it isn't a dynamic object ID, here is your error: invalid default ID set) there because
lookingat_objectid is not a "ValidDynamicObject" [ in the "if" check before checking for
PlayerData[playerid][E_PLAYER_LOOKING_AT_ITEMID] ] ), which means that the problem is from the second block of code ("else"), which is called if he isn't looking at any dynamic object.
Did you set
PlayerData[playerid][E_PLAYER_LOOKING_AT_ITEMID] to INVALID_OBJECT_ID when the player connects ? If it isn't INVALID_OBJECT_ID (0xFFFF/65535) that check will be true which means that it will go to this ( assuming that variable is set to 0 (or, well, any other invalid dynamic object ID, if not set as INVALID_OBJECT_ID) ):
PHP код:
Streamer_GetArrayData(STREAMER_TYPE_OBJECT, 0 /*PlayerData[playerid][E_PLAYER_LOOKING_AT_ITEMID]*/, E_STREAMER_EXTRA_ID, object_data, sizeof(object_data));
if(Streamer_IsInArrayData(STREAMER_TYPE_OBJECT, 0 /*PlayerData[playerid][E_PLAYER_LOOKING_AT_ITEMID]*/, E_STREAMER_EXTRA_ID, object_data[9]))
hence your warnings, exactly in that order:
Quote:
*** Streamer Plugin: Streamer_GetArrayData: Invalid ID specified.
*** Streamer Plugin: Streamer_IsInArrayData: Invalid ID specified.
|
By the way, INVALID_OBJECT_ID is actually a really valid object ID in Streamer Plugin (Dynamic Object ID 65535), so you'd better initialize it with 0 (or INVALID_STREAMER_ID), as object IDs are starting from 1, just in case. Also, you should really use the latest Streamer Plugin, in v2.9.0 the function GetPlayerCameraTargetDynObject was added, which returns 0 (INVALID_STREAMER_ID) when he isn't targeting any dynamic object.
To simply check if my theory is correct, you should add
IsValidDynamicObject(PlayerData[playerid][E_PLAYER_LOOKING_AT_ITEMID]) after the first check:
Код:
if(PlayerData[playerid][E_PLAYER_LOOKING_AT_ITEMID] != INVALID_OBJECT_ID)
=>
Код:
if(PlayerData[playerid][E_PLAYER_LOOKING_AT_ITEMID] != INVALID_OBJECT_ID && IsValidDynamicObject(PlayerData[playerid][E_PLAYER_LOOKING_AT_ITEMID]))
I don't see anything else which could cause that in the code you posted, so this should really be the problem. Always keep in mind the possible functions return values. Sorry if you didn't understand, but I think that I explained as much as possible (maybe too much, so this might rise problems in understanding what I said xD).
--------------------------
When requesting help you have post the whole code blocks, not only just a part, maybe the problem isn't really from where you think it is from, just like in this case.
Re: Streamer Plugin -
Riddick94 - 07.05.2017
Quote:
Originally Posted by IstuntmanI
...
|
Would have never thought of anyone to be that experienced with Streamer and to be that happy to help.
Thanks.
That's what I had in my OnPlayerConnect:
pawn Код:
PlayerData[playerid][E_PLAYER_LOOKING_AT_ITEMID] = PlayerData[playerid][E_PLAYER_LOOKING_AT_PLAYERID] = -1;
Let me play around a bit with the informations you have gave me and I will come up with the solution for sure. Also, have changed right away the function:
pawn Код:
new lookingat_objectid = GetPlayerCameraTargetDynObject(playerid);
I will edit this post.
edit://
The issue was with the OnPlayerConnect where I haven't set the 2D Array value to INVALID but to '-1' instead. Thanks a lot!
Re: Streamer Plugin -
rt-2 - 08.05.2017
I will do that next time I HAVE to dig to find information,, just weird that they previously provided it and just removed it instead of transfering.
Re: Streamer Plugin -
Riddick94 - 10.05.2017
IsPlayerInDynamicArea - capable of recognizing only PLAYER. Is this possible to get it to work on NPCs too?
response:// @down,
You are probably mad. I'm not gonna use timer for that.
Re: Streamer Plugin -
ForT - 10.05.2017
Quote:
Originally Posted by Riddick94
IsPlayerInDynamicArea - capable of recognizing only PLAYER. Is this possible to get it to work on NPCs too?
|
Take the position of the NPC and use
IsPointInDynamicArea
Re: Streamer Plugin -
iLearner - 18.05.2017
Is there any function like
CreateDynamicPlayer3DTextLabel ? (per player labels)
Re: Streamer Plugin -
AbyssMorgan - 18.05.2017
a_samp.inc
PHP код:
CreatePlayer3DTextLabel(playerid, text[], color, Float:X, Float:Y, Float:Z, Float:DrawDistance, attachedplayer=INVALID_PLAYER_ID, attachedvehicle=INVALID_VEHICLE_ID, testLOS=0);
streamer.inc
Код:
CreateDynamic3DTextLabel(const text[], color, Float:x, Float:y, Float:z, Float:drawdistance,
attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID, testlos = 0,
worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = STREAMER_3D_TEXT_LABEL_SD, STREAMER_TAG_AREA areaid = STREAMER_TAG_AREA -1, priority = 0);
Re: Streamer Plugin -
Logic_ - 28.05.2017
Quote:
Originally Posted by AbyssMorgan
a_samp.inc
PHP код:
CreatePlayer3DTextLabel(playerid, text[], color, Float:X, Float:Y, Float:Z, Float:DrawDistance, attachedplayer=INVALID_PLAYER_ID, attachedvehicle=INVALID_VEHICLE_ID, testLOS=0);
streamer.inc
Код:
CreateDynamic3DTextLabel(const text[], color, Float:x, Float:y, Float:z, Float:drawdistance,
attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID, testlos = 0,
worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = STREAMER_3D_TEXT_LABEL_SD, STREAMER_TAG_AREA areaid = STREAMER_TAG_AREA -1, priority = 0);
|
I've worked with dynamic labels per player but for some reason they get attached to wrong player when the player disconnects/ dies/ spectates, while I also destroy label on OnPlayerDeath, OPDisconnect and in such other places.
Re: Streamer Plugin -
Riddick94 - 09.06.2017
This is my function, when admin creates an item on the server:
pawn Код:
PublicEx OnAdminCreateItem(playerid, objectid, itemid, modelid, quantity, Float:x, Float:y, Float:z)
{
Streamer_UpdateEx(playerid, x, y, z, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid));
new object_data[10];
object_data[0] = itemid;
SerwerData[E_SERWER_LAST_ITEM_UID] = object_data[1] = cache_insert_id();
object_data[2] = modelid;
object_data[3] = _:x;
object_data[4] = _:y;
object_data[5] = _:z;
object_data[6] = GetPlayerVirtualWorld(playerid);
object_data[7] = GetPlayerInterior(playerid);
object_data[8] = quantity;
object_data[9] = INVALID_3DTEXT_ID;
Streamer_SetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, object_data, sizeof(object_data));
I want to add an extra array 'object_data[10]' but it has to be a string which can hold 64 characters.
pawn Код:
strmid(object_data[10][......], "My text has 64 chars or whatever", 0, 64, 64);
object_data[10] and then it needs to know the amount of chars which is [64]... I can't figure it out and dunno how to do it.
Anyone?
Re: Streamer Plugin -
ball - 09.06.2017
Create enum
Код:
enum myEnum
{
data_model,
...
data_string[64]
}
new object_data[myEnum];
strmid(object_data[data_string], ...);
Re: Streamer Plugin -
WASD - 04.07.2017
delll.
Re: Streamer Plugin -
Paulice - 14.07.2017
Will there ever be support for gang zones?
Re: Streamer Plugin -
Salik - 05.08.2017
Dear Incognito, could you simplify the function 'Streamer_GetNearbyItems', I almost did not understand how it works, how to determine the number of Objects in a given position, could make it something to return a count of objects or to show an example.
Re: Streamer Plugin -
TommyB - 05.08.2017
Quote:
Originally Posted by Salik
Dear Incognito, could you simplify the function 'Streamer_GetNearbyItems', I almost did not understand how it works, how to determine the number of Objects in a given position, could make it something to return a count of objects or to show an example.
|
https://github.com/samp-incognito/sa...GetNearbyItems
That has all the info you need. If you wish to grab the number of objects in that position after using the native, you can use 'strlen(yourarray)'.
Re: Streamer Plugin -
Salik - 05.08.2017
Quote:
Originally Posted by TommyB
|
Do you think I did not watch the wiki? If you can help me make this function, it will stupidly return 0 or 1 ...
Not just a return, to the array ...
Re: Streamer Plugin -
beckzy - 06.08.2017
22 commits since 2.9.1. When is 2.9.2 coming? I'm getting sick of the checkpoint bug where they don't show until you re-enter the area. I know that one of the commits fixes this. I'd have thought you'd released 2.9.2 by now so people can download it, use it, and not experience that horrific bug.