Creating a robbable actor ERROR
#1

....
Reply
#2

up++
Reply
#3

the problem continues
Reply
#4

lol, includes arent meant to be compiled. You use the functions and callbacks provided by the include in your own gamemode. Also, remember not to bump your topics before 24 hours.
Reply
#5

Quote:
Originally Posted by Ritzy
Посмотреть сообщение
lol, includes arent meant to be compiled. You use the functions and callbacks provided by the include in your own gamemode. Also, remember not to bump your topics before 24 hours.
Sorry, I not compile you include, I compile GM errors.
Reply
#6

Your code is the default code which comes with server package, did you messed with the include code or something, and the warnings in the GM is from having the include in your code but not utilizing it. There are absolutely no errors in the GM code.
Reply
#7



You also don't have "OnPlayerFinishRobbery" and "OnPlayerStartRobbery" functions defined anywhere, which is why the compiler complains. You need to create / add those to the code.

The second last error you have, is because you did not add this to your code:
PHP код:
forward actorrob_OnPlayerConnect(playerid); 
Please add this in the file where the error appears. (test.pwn)
Reply
#8

I tried what you said, but my problem continues



test.pwn https://www.solidfiles.com/v/nY4ewPDzLvn4W
Код:
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

#include <a_samp>
#include <actor_robbery>

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" Blank Filterscript by your name here");
	print("--------------------------------------\n");
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}

#else

main()
{
	print("\n----------------------------------");
	print(" Blank Gamemode by your name here");
	print("----------------------------------\n");
}

#endif

public OnGameModeInit()
{
	// Don't use these lines if it's a filterscript
	SetGameModeText("Blank Script");
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
	return 1;
}

public OnGameModeExit()
{
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
	return 1;
}

public OnPlayerConnect(playerid)
{
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
	return 1;
}

public OnPlayerSpawn(playerid)
{
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
	return 1;
}

public OnPlayerText(playerid, text[])
{
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	if (strcmp("/mycommand", cmdtext, true, 10) == 0)
	{
		// Do something here
		return 1;
	}
	return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
	return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
	return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
	return 1;
}

public OnRconCommand(cmd[])
{
	return 1;
}

public OnPlayerRequestSpawn(playerid)
{
	return 1;
}

public OnObjectMoved(objectid)
{
	return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
	return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
	return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
	return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
	return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
	return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
	return 1;
}

public OnPlayerExitedMenu(playerid)
{
	return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
	return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
	return 1;
}

public OnPlayerUpdate(playerid)
{
	return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
	return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
	return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
	return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
	return 1;
}

public OnPlayerStartRobbery(playerid, actorid, robbed_recently)
{
    new string[128];
    if(robbed_recently)
    {
        format(string, sizeof(string), "ActorID: %i -> has been robbed recently, please try again later!");
        SendClientMessage(playerid, -1, string);
        return 0;
    }
    else
    {
        new name[MAX_PLAYER_NAME];
        GetPlayerName(playerid, name, sizeof(name));

        format(string, sizeof(string), "Player %s(%i) has begun robbing actorid: %i", name, playerid, actorid);
        SendClientMessage(playerid, -1, string);
    }
    return 1;
}


public OnPlayerFinishRobbery(playerid, actorid, robbedmoney, type)
{
    new string[128];

    switch(type)
    {
        case TYPE_SUCCESS:
        {
            format(string, sizeof(string), "[ROBBERY SUCCESS]: You have manage to steal $%i from actorid: %i", robbedmoney, actorid);
            SendClientMessage(playerid, -1, string);

            format(string, sizeof(string), "~w~You stole~n~~g~$%i", robbedmoney);
            GameTextForPlayer(playerid, string, 6000, 1);
        }
        case TYPE_FAILED:
        {
            SendClientMessage(playerid, -1, "[ROBBERY FAILED]: Cashier refused to give money!");
            GameTextForPlayer(playerid, "~r~Robbery Failed", 6000, 1);
        }
        case TYPE_UNFINISHED:
        {
            SendClientMessage(playerid, -1, "[ROBBERY FAILED]: You have gone too far away from the actor, he managed to call 911! RUN!");
            GameTextForPlayer(playerid, "~r~Robbery Failed", 6000, 1);
        }
    }
    SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) + 2);
    return 1;
}
actor_robbery.inc
Код:
/*
	[DECLARATIONS]
*/

#if !defined _samp_included
	#error Please include a_samp before actor_robbery.
#endif

#if !defined KEY_AIM
	#define KEY_AIM  128
#endif

#if !defined PreloadAnimLib
	#define PreloadAnimLib(%1,%2) ApplyAnimation(%1,%2,"null",0.0,0,0,0,0,0)
#endif

#define MAX_ROBBERY_ACTORS		(50)

#define TYPE_SUCCESS        (0)
#define TYPE_FAILED         (1)
#define TYPE_UNFINISHED     (2)

#define MIN_MONEY_ROB       500
#define MAX_MONEY_ROB       10000
#define ROBBERY_WAIT_TIME   (5)



enum E_ACTOR_ROBBERY_DATA
{
	actor_skin,
	Float:actor_x,
	Float:actor_y,
	Float:actor_z,
	Float:actor_ang,
	actor_vw,
	money_min,
	money_max,

	bool:actor_created,
	actor_robbedRecently
}
static 
	robbery_data[MAX_ROBBERY_ACTORS][E_ACTOR_ROBBERY_DATA],
	i_actor = 0;

forward RunActorAnimationSequence(playerid, actorid, animation_pattern);
forward OnPlayerStartRobbery(playerid, actorid, robbed_recently);
forward OnPlayerFinishRobbery(playerid, actorid, robbedmoney, type);


/*
	Function:
		CreateActorRobbery

	Info:
		Creates the robbery actor according to the position set.

	Param:
	* skinid -> Skin ID of the robbery actor
	* Float:x -> Coordinate X of the robbery actor
	* Float:y -> Coordinate X of the robbery actor
	* Float:z -> Coordinate X of the robbery actor
	* Float:ang -> Facing angle of the robbery actor
	* actor_vwid -> virtualid of the robbery actor
	* r_moneymin -> Minimum money to be robbed from the robbery actor
	* r_moneymax -> Maximum money to be robbed from the robbery actor

*/

stock CreateActorRobbery(skinid, Float:x, Float:y, Float:z, Float:ang, actor_vwid = 0, r_moneymin = MIN_MONEY_ROB, r_moneymax = MAX_MONEY_ROB)
{

	new actorid = GetActorFreeID();

	if(actorid == -1)
	{
		print("ERROR: MAX_ROBBERY_ACTOR reached, increase the limit size.");
		return -1;
	}

	CreateActor(skinid, x, y, z, ang);
	SetActorVirtualWorld(actorid, actor_vwid);

	robbery_data[actorid][actor_created] = true;
	robbery_data[actorid][actor_skin] = skinid;
	robbery_data[actorid][actor_x] = x;
	robbery_data[actorid][actor_y] = y;
	robbery_data[actorid][actor_z] = z;
	robbery_data[actorid][actor_ang] = ang;
	robbery_data[actorid][actor_vw] = actor_vwid;
	robbery_data[actorid][money_min] = r_moneymin;
	robbery_data[actorid][money_max] = r_moneymax;

	return (++ i_actor - 1); 
}

/*
	Function:
		GetActorRobberyData

	Info:
		Retrieves the actor data

	Param:
		* actorid -> ID of robbery actor you want to retrieve data from. 
		* &skinid -> Skin ID of the robbery actor
		* &Float:x -> Coordinate X of the robbery actor
		* &Float:y -> Coordinate X of the robbery actor
		* &Float:z -> Coordinate X of the robbery actor
		* &Float:ang -> Facing angle of the robbery actor
		* &actor_vwid -> virtualid of the robbery actor
		* &r_moneymin -> Minimum money to be robbed from the robbery actor
		* &r_moneymax -> Maximum money to be robbed from the robbery actor
*/

stock GetActorRobberyData(actorid, &skinid, &Float:x, &Float:y, &Float:z, &Float:ang, &actor_vwid, &r_moneymin, &r_moneymax)
{
	if(actorid == INVALID_ACTOR_ID)
		return 1;

	skinid = robbery_data[actorid][actor_skin];
	x = robbery_data[actorid][actor_x];
	y = robbery_data[actorid][actor_y];
	z = robbery_data[actorid][actor_z] ;
	ang = robbery_data[actorid][actor_ang] ;
	actor_vwid = robbery_data[actorid][actor_vw];
	r_moneymin = robbery_data[actorid][money_min];
	r_moneymax = robbery_data[actorid][money_max];
	return 1;
}

/*
Function: 
	GetActorFreeID

Info:	
	Retrieves the unused ID of an actor.

Param:
	None

*/

static GetActorFreeID() 
{
	for(new i = 0; i < MAX_ROBBERY_ACTORS; i++) 
	{ 
		if(!robbery_data[i][actor_created]) return i;
	}
	return -1;
}

/*
	Robbery IMPL
*/

public RunActorAnimationSequence(playerid, actorid, animation_pattern)
{
	switch(animation_pattern)
	{
		case 0:
		{
			ClearActorAnimations(actorid);
			ApplyActorAnimation(actorid, "SHOP", "SHP_Rob_HandsUp", 4.1, 0, 1, 1, 1, 0);
		
			SetTimerEx("RunActorAnimationSequence", 1000 * ROBBERY_WAIT_TIME, false, "iii", playerid, actorid, 1);
		
			new Float:x, Float:y, Float:z;
			GetPlayerPos(playerid, x, y, z);
		
			for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
			{
				if(!IsPlayerConnected(i)) { continue; }
				PlayerPlaySound(i, 3401, x, y, z);
			}
		}
		case 1:
		{
			if(!IsPlayerInRangeOfPoint(playerid, 10.0, robbery_data[actorid][actor_x], robbery_data[actorid][actor_y], robbery_data[actorid][actor_z]))
			{
				OnPlayerFinishRobbery(playerid, actorid, 0, TYPE_UNFINISHED);
			}
			else 
			{
				ClearActorAnimations(actorid);
				ApplyActorAnimation(actorid, "SHOP", "SHP_Rob_GiveCash", 4.1, 0, 1, 1, 1, 0);
			
				SetTimerEx("RunActorAnimationSequence", 1000 * ROBBERY_WAIT_TIME, false, "iii", playerid, actorid, 2);
			}
		}
		case 2:
		{
			ClearActorAnimations(actorid);
			ApplyActorAnimation(actorid, "PED", "DUCK_cower", 4.1, 1, 1, 1, 1, 1);
		
			SetTimerEx("RunActorAnimationSequence", 1000 * 60 * ROBBERY_WAIT_TIME, false, "iii", playerid, actorid, 3);
		
			new 
			robberyChance = random(100);
			if(robberyChance > 40)
			{
				OnPlayerFinishRobbery(playerid, actorid, (random(robbery_data[actorid][money_max] - robbery_data[actorid][money_min]) + robbery_data[actorid][money_min]), TYPE_SUCCESS);
			}
			else OnPlayerFinishRobbery(playerid, actorid, 0, TYPE_FAILED);
		}
		case 3:
		{
			ClearActorAnimations(actorid);
			PlayerPlaySound(playerid, 0, 0.0, 0.0, 0.0);
		}

	}
	return 1;
}

public OnPlayerConnect(playerid)
{
	EnablePlayerCameraTarget(playerid, 1);

	PreloadAnimLib(playerid, "PED");
	PreloadAnimLib(playerid, "SHOP");

	#if defined actorrob_OnPlayerConnect
    		actorrob_OnPlayerConnect(playerid);
	#endif
	return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	if((newkeys & KEY_AIM) == KEY_AIM && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
	{
		switch(GetPlayerWeapon(playerid))
		{
			case 22 .. 33: 
			{
				new actorid = GetPlayerCameraTargetActor(playerid);

				if(actorid == INVALID_ACTOR_ID)
					return 1;

				if(gettime() - robbery_data[actorid][actor_robbedRecently] < 60 * ROBBERY_WAIT_TIME)
						return OnPlayerStartRobbery(playerid, actorid, 1);

				robbery_data[actorid][actor_robbedRecently] = gettime();
				RunActorAnimationSequence(playerid, actorid, 0);
			}
		}
	}
   	#if defined actorrob_OnPlayerKeyStateChange
        	actorrob_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
    	#else
   	 	return 1;
	#endif

}

//OnPlayerKeyStateChange hook directives

#if defined _ALS_OnPlayerKeyStateChange
    #undef OnPlayerKeyStateChange
#else
    #define _ALS_OnPlayerKeyState
#endif

#define OnPlayerKeyStateChange actorrob_OnPlayerKeyStateChange

#if defined actorrob_OnPlayerKeyStateChange
    forward actorrob_OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
#endif

//OnPlayerConnect directives

#if defined _ALS_OnPlayerConnect
    #undef OnPlayerConnect
#else
    #define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect actorrob_OnPlayerConnect
#if defined actorrob_OnPlayerConnect
    forward actorrob_OnPlayerConnect(playerid);
#endif
Note: My bad english,Sorry.Thanks in advance.
Reply
#9

I made a few additions to reduce the number of faults, but only 1 partition left.



Reply
#10

I've solved the problem by adding "return 1;", did I do something right?

Not: Line 256 added "return 1;"

Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)