3 includes, one public and error 021
#1

Hello, I have 3 includes which benefit from public OnPlayerClickPlayerTextDraw. Gives me an error "error 021: symbol already defined". I know what he means. Simple examples of how colors and other small problems i can fix it but this I can not .


on first include i have so

Код:
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{

	//code


	#if defined Dialog_OnPlayerClickTextDraw
       	return Dialog_OnPlayerClickTextDraw(playerid, clickedid);
	#else
	   	return 0;
	#endif
}
#if defined _ALS_OnPlayerClickTextDraw
    #undef OnPlayerClickTextDraw
#else
    #define _ALS_OnPlayerClickTextDraw
#endif
#define OnPlayerClickTextDraw Dialog_OnPlayerClickTextDraw
#if defined Dialog_OnPlayerClickTextDraw
    forward Dialog_OnPlayerClickTextDraw(playerid, Text:clickedid);
#endif


public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{

	//code

//I have it at the end public

#if defined Dialog_OnPlayerClickPlayerTD
       	return Dialog_OnPlayerClickPlayerTD(playerid, playertextid);
	#else
	   	return 0;
	#endif
}

#define OnPlayerClickPlayerTextDraw Dialog_OnPlayerClickPlayerTD
#if defined Dialog_OnPlayerClickPlayerTD
    forward Dialog_OnPlayerClickPlayerTD(playerid, PlayerText:playertextid);
#endif
and second include i have so


Код:
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
	//code

	return CallLocalFunction("AC_OPCTD_ACM", "ii", playerid, _:clickedid);
}
#if defined _ALS_OnPlayerClickTextDraw
	#undef OnPlayerClickTextDraw
#else
	#define _ALS_OnPlayerClickTextDraw
#endif
#define OnPlayerClickTextDraw AC_OPCTD_ACM
forward AC_OPCTD_ACM(playerid, Text:clickedid);

public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
	//code
	
	return CallLocalFunction("AC_OPCPTD_ACM", "ii", playerid, _:playertextid);
}
#if defined _ALS_OnPlayerClickPlayerTD
	#undef OnPlayerClickPlayerTextDraw
#else
	#define _ALS_OnPlayerClickPlayerTD
#endif
#define a_OnPlayerClickPlayerTextDraw AC_OPCPTD_ACM

forward AC_OPCPTD_ACM(playerid, PlayerText:playertextid);
I already haven't ideas on this. Please help because i never met with this and i may broaden my knowledge
Reply
#2

Any callback/function that is used inside an include file must be hooked: https://sampforum.blast.hk/showthread.php?tid=570910

The 2 includes use hooks but the 3rd?
Reply
#3

two includes a well-worked, but when I added the third is already showing errors
Reply
#4

pawn Код:
#define a_OnPlayerClickPlayerTextDraw AC_OPCPTD_ACM
It should be:
pawn Код:
#define OnPlayerClickPlayerTextDraw AC_OPCPTD_ACM
Reply
#5

when i change this code i have this warning
warning 201: redefinition of constant/macro (symbol "OnPlayerClickPlayerTextDraw") on first include and in second include i have this same problem ( 021 )
Reply
#6

Quote:
Originally Posted by wampiros6
Посмотреть сообщение
when i change this code i have this warning
warning 201: redefinition of constant/macro (symbol "OnPlayerClickPlayerTextDraw") on first include and in second include i have this same problem ( 021 )
Can you show all the hooks done in all the 3 include files?

Also, try changing the second file's hook to Hook method 7 which will help resolve your problems (just like the hook done in first file).
Reply
#7

Код:
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
	if(GetPVarInt(playerid, "circularmenu_active") >= 0)
	{
		new circularmenuid = GetPVarInt(playerid, "circularmenu_active");
		
		if(playertextid == CircularMenu_Lines[playerid][circularmenuid][0]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 0);
		else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][1]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 1);
        else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][2]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 2);
        else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][3]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 3);
        else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][4]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 4);
        else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][5]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 5);
        else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][6]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 6);
        else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][7]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 7);
        //else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][8]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 8);
        /*else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][8])
		{
			CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, false, circularmenuid, -1);
			DestroyCircularMenu(playerid, circularmenuid);
		   	SetPVarInt(playerid, "circularmenu_active", -1);
		}*/
		CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, false, circularmenuid, -1);
		DestroyCircularMenu(playerid, circularmenuid);
		SetPVarInt(playerid, "circularmenu_active", -1);
	}
	return CallLocalFunction("AC_OPCPTD_ACM", "ii", playerid, _:playertextid);
}
#if defined _ALS_OnPlayerClickPlayerTD
	#undef OnPlayerClickPlayerTextDraw
#else
	#define _ALS_OnPlayerClickPlayerTD
#endif
#define OnPlayerClickPlayerTextDraw AC_OPCPTD_ACM
	forward AC_OPCPTD_ACM(playerid, PlayerText:playertextid);
Код:
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
	switch (pDialogStyle[playerid])
	{
	    case DIALOG_STYLE_PREVMODEL,
			 DIALOG_STYLE_PREVMODEL_LIST:
		{
			if (playertextid == ptxtDialog[playerid][pDialogComponents[playerid][E_DIALOG_COMPONENT_BUTTON2]])
			{
				Dialog_Exit(playerid);

				pDialogStyle[playerid] = -1;

				CancelSelectTextDraw(playerid);

				if (funcidx("OnDialogResponse") != -1)
					CallRemoteFunction("OnDialogResponse", "iiiis", playerid, pDialogId[playerid], 0, pDialogListitem[playerid], "\1");

				pDialogId[playerid] = -1;
				pDialogDualButtons[playerid] = false;
				pDialogTotalListitems[playerid] = 0;
				pDialogPage[playerid] = 0;
				pDialogListitem[playerid] = 0;
				pDialogLastClick[playerid] = 0;
			}
			else if (playertextid == ptxtDialog[playerid][pDialogComponents[playerid][E_DIALOG_COMPONENT_BUTTON1]] || playertextid == ptxtDialog[playerid][pDialogComponents[playerid][E_DIALOG_COMPONENT_BUTTONC]])
			{
				Dialog_Exit(playerid);

				pDialogStyle[playerid] = -1;

				CancelSelectTextDraw(playerid);

				if (funcidx("OnDialogResponse") != -1)
					CallRemoteFunction("OnDialogResponse", "iiiis", playerid, pDialogId[playerid], 1, pDialogListitem[playerid], "\1");

				pDialogId[playerid] = -1;
				pDialogDualButtons[playerid] = false;
				pDialogTotalListitems[playerid] = 0;
				pDialogPage[playerid] = 0;
				pDialogListitem[playerid] = 0;
				pDialogLastClick[playerid] = 0;
			}
			else if (playertextid == ptxtDialog[playerid][pDialogComponents[playerid][E_DIALOG_COMPONENT_SCROLL_UP]])
			{
				if ((pDialogPage[playerid] - 1) < 0)
				{
    				PlayerPlaySound(playerid, 1084, 0.0, 0.0, 0.0);
				}
				else
				{
				    pDialogPage[playerid]--;
			    	Dialog_SetPage(playerid, pDialogPage[playerid], 0);
				}
			}
			else if (playertextid == ptxtDialog[playerid][pDialogComponents[playerid][E_DIALOG_COMPONENT_SCROLL_DOWN]])
			{
				if ((pDialogPage[playerid] + 1) >= Dialog_CountPages(pDialogTotalListitems[playerid], ((pDialogStyle[playerid] == DIALOG_STYLE_PREVMODEL) ? (6 * 4) : (5))))
				{
    				PlayerPlaySound(playerid, 1084, 0.0, 0.0, 0.0);
				}
				else
				{
				    pDialogPage[playerid]++;
			    	Dialog_SetPage(playerid, pDialogPage[playerid], 0);
				}
			}
	        else
	        {
			    if (pDialogStyle[playerid] == DIALOG_STYLE_PREVMODEL)
				{
					new id = -1;
					for (new i; i < (6 * 4); i++)
					{
						if (((pDialogPage[playerid] * (6 * 4)) + i) < pDialogTotalListitems[playerid])
						{
						    if (playertextid == ptxtDialog[playerid][pDialogComponents[playerid][E_DIALOG_COMPONENT_MODEL][i]])
						    {
						        pDialogListitem[playerid] = (pDialogPage[playerid] * (6 * 4)) + i;
						        id = i;

						        break;
						    }
						}
						else
						{
						    break;
						}
					}

					if (id != -1)
					{
					    if (GetTickCount() - pDialogLastClick[playerid] <= 200)
					    {
							Dialog_Exit(playerid);

							pDialogStyle[playerid] = -1;

							CancelSelectTextDraw(playerid);

							if (funcidx("OnDialogResponse") != -1)
								CallRemoteFunction("OnDialogResponse", "iiiis", playerid, pDialogId[playerid], 1, pDialogListitem[playerid], "\1");

							pDialogId[playerid] = -1;
							pDialogDualButtons[playerid] = false;
							pDialogTotalListitems[playerid] = 0;
							pDialogPage[playerid] = 0;
							pDialogListitem[playerid] = 0;
							pDialogLastClick[playerid] = 0;
					    }
					    else
					    {
							for (new i; i < (6 * 4); i++)
							{
								if (((pDialogPage[playerid] * (6 * 4)) + i) < pDialogTotalListitems[playerid])
								{
								    if (id == i)
								    {
						    			PlayerTextDrawBackgroundColor(playerid, ptxtDialog[playerid][pDialogComponents[playerid][E_DIALOG_COMPONENT_MODEL][i]], DIALOG_SELECTION_COLOR);
								    }
									else
									{
										PlayerTextDrawBackgroundColor(playerid, ptxtDialog[playerid][pDialogComponents[playerid][E_DIALOG_COMPONENT_MODEL][i]], DIALOG_NORMAL_COLOR);
									}
									PlayerTextDrawShow(playerid, ptxtDialog[playerid][pDialogComponents[playerid][E_DIALOG_COMPONENT_MODEL][i]]);
								}
								else
								{
								    break;
								}
							}
						}

						pDialogLastClick[playerid] = GetTickCount();
					}
				}
				else
				{
				    new id = -1;
					for (new i; i < 5; i++)
					{
						if (((pDialogPage[playerid] * (5)) + i) < pDialogTotalListitems[playerid])
						{
					    	if (playertextid == ptxtDialog[playerid][pDialogComponents[playerid][E_DIALOG_COMPONENT_BAR][i]])
					    	{
							    pDialogListitem[playerid] = (pDialogPage[playerid] * (5)) + i;
						        id = i;

						        break;
						    }
						}
						else
						{
						    break;
						}
					}

					if (id != -1)
					{
					    if (GetTickCount() - pDialogLastClick[playerid] <= 200)
					    {
							Dialog_Exit(playerid);

							pDialogStyle[playerid] = -1;

							CancelSelectTextDraw(playerid);

							if (funcidx("OnDialogResponse") != -1)
								CallRemoteFunction("OnDialogResponse", "iiiis", playerid, pDialogId[playerid], 1, pDialogListitem[playerid], "\1");

							pDialogId[playerid] = -1;
							pDialogDualButtons[playerid] = false;
							pDialogTotalListitems[playerid] = 0;
							pDialogPage[playerid] = 0;
							pDialogListitem[playerid] = 0;
							pDialogLastClick[playerid] = 0;
					    }
					    else
					    {
							for (new i; i < 5; i++)
							{
								if (((pDialogPage[playerid] * (5)) + i) < pDialogTotalListitems[playerid])
								{
								    if (id == i)
								    {
						    			PlayerTextDrawColor(playerid, ptxtDialog[playerid][pDialogComponents[playerid][E_DIALOG_COMPONENT_BAR][i]], ((DIALOG_SELECTION_COLOR & ~0xFF) | 0xFF));
								    }
									else
									{
										PlayerTextDrawColor(playerid, ptxtDialog[playerid][pDialogComponents[playerid][E_DIALOG_COMPONENT_BAR][i]], ((DIALOG_NORMAL_COLOR & ~0xFF) | 0xFF));
									}
									PlayerTextDrawShow(playerid, ptxtDialog[playerid][pDialogComponents[playerid][E_DIALOG_COMPONENT_BAR][i]]);
								}
								else
								{
								    break;
								}
							}
						}

						pDialogLastClick[playerid] = GetTickCount();
					}
	            }
			}

			return 1;
		}
	}

    #if defined Dialog_OnPlayerClickPlayerTD
       	return Dialog_OnPlayerClickPlayerTD(playerid, playertextid);
	#else
	   	return 0;
	#endif
}

#define OnPlayerClickPlayerTextDraw Dialog_OnPlayerClickPlayerTD
#if defined Dialog_OnPlayerClickPlayerTD
    forward Dialog_OnPlayerClickPlayerTD(playerid, PlayerText:playertextid);
#endif
do you know it ?

Код:
#if defined _inc_y_hooks || defined _INC_y_hooks
	Hook:ac_OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
#else
	public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
#endif
{
	if(AntiCheatInfo[playerid][acKicked]) return 0;
	new ac_i = GetTickCount();
	if(AntiCheatInfo[playerid][acACAllow][49])
	{
		if(ac_i < AntiCheatInfo[playerid][acCall][23] + ac_Mtfc[23][0]) return ac_FloodDetect(playerid, 23);
		if(ac_i < AntiCheatInfo[playerid][acCall][27] + ac_Mtfc[27][0]) ac_FloodDetect(playerid, 27);
		else AntiCheatInfo[playerid][acFloodCount][23] = AntiCheatInfo[playerid][acFloodCount][27] = 0;
	}
	AntiCheatInfo[playerid][acCall][27] = AntiCheatInfo[playerid][acCall][23] = ac_i;
	#if !defined _inc_y_hooks && !defined _INC_y_hooks\
		&& defined ac_OnPlayerClickPlayerTextDraw
		return ac_OnPlayerClickPlayerTextDraw(playerid, playertextid);
	#else
		return 1;
	#endif
}
Reply
#8

You need to change these type of hooks:
pawn Код:
return CallLocalFunction("AC_OPCPTD_ACM", "ii", playerid, _:playertextid);
}
#if defined _ALS_OnPlayerClickPlayerTD
    #undef OnPlayerClickPlayerTextDraw
#else
    #define _ALS_OnPlayerClickPlayerTD
#endif
#define OnPlayerClickPlayerTextDraw AC_OPCPTD_ACM
    forward AC_OPCPTD_ACM(playerid, PlayerText:playertextid);
To ALS hook method 7 (sample):
pawn Код:
public OnSomething()
{
    #if defined lib_OnSomething
        return lib_OnSomething();
    #else
        return 0;
    #endif
}
#if defined _ALS_OnSomething
    #undef OnSomething
#else
    #define _ALS_OnSomething
#endif
#define OnSomething lib_OnSomething
#if defined lib_OnSomething
    forward lib_OnSomething();
#endif
Reply
#9

Код:
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
	if(GetPVarInt(playerid, "circularmenu_active") >= 0)
	{
		new circularmenuid = GetPVarInt(playerid, "circularmenu_active");
		
		if(playertextid == CircularMenu_Lines[playerid][circularmenuid][0]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 0);
		else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][1]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 1);
        else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][2]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 2);
        else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][3]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 3);
        else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][4]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 4);
        else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][5]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 5);
        else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][6]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 6);
        else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][7]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 7);
        //else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][8]) CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, true, circularmenuid, 8);
        /*else if(playertextid == CircularMenu_Lines[playerid][circularmenuid][8])
		{
			CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, false, circularmenuid, -1);
			DestroyCircularMenu(playerid, circularmenuid);
		   	SetPVarInt(playerid, "circularmenu_active", -1);
		}*/
		CallLocalFunction("OnCircularMenuResponse", "dddd", playerid, false, circularmenuid, -1);
		DestroyCircularMenu(playerid, circularmenuid);
		SetPVarInt(playerid, "circularmenu_active", -1);
	}

	#if defined My_OnPlayerClickPlayerTextDraw
		return My_OnPlayerClickPlayerTextDraw(playerid, playertextid);
	#else
		return 0;
	#endif
}

#if defined _ALS_OnPlayerClickPlayerTD
	#undef OnPlayerClickPlayerTextDraw
#else
	#define _ALS_OnPlayerClickPlayerTD
#endif
#define OnPlayerClickPlayerTextDraw My_OnPlayerClickPlayerTextDraw
#if defined My_OnPlayerClickPlayerTextDraw
	forward My_OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid);
#endif
?


well if I did then I continue the same mistakes
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)