26.05.2015, 20:50
Hi well look I want to do a function that if you die inside a mini game you respawn inside it again and with the weapons of the mini game and all its staff.
You can use playerinfo[playerid][pDm] . set it to 1 when he joins and to 0 when he quits and then you can create cmds with this pInfo
|
// [ DEVELOPMENT GAMEMODE ]
// INCLUDES:
#include <a_samp>
#include <zcmd>
#include <sscanf2>
// DEFINES:
// GENERAL:
#define MAX_MINIGAMES 2
// MINIGAMES:
#define MINIGAME_DM 0
#define MINIGAME_DERBY 1
// VARIABLES:
new bool:sMinigame[MAX_PLAYERS][MAX_MINIGAMES];
// MAIN:
main()
{
print("Development Mode: minigame_respawn.amx");
}
// CALLBACKS:
public OnGameModeInit()
{
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerSpawn(playerid)
{
if(IsPlayerInAnyMinigame(playerid))
{
new minigame = GetPlayerMinigameID(playerid);
GivePlayerMinigameWeapons(playerid, minigame);
SpawnPlayerInMinigame(playerid, minigame);
}
return 1;
}
// COMMANDS:
CMD:join(playerid, params[])
{
new minigame;
if(sscanf(params, "i", minigame)) return SendClientMessage(playerid, -1, "Usage: /join (minigame id).");
if(minigame < 0 || minigame > MAX_MINIGAMES) return SendClientMessage(playerid, -1, "Invalid minigame, valid minigames: 0, 1.");
sMinigame[playerid][minigame] = true;
GivePlayerMinigameWeapons(playerid, minigame);
SpawnPlayerInMinigame(playerid, minigame);
return 1;
}
CMD:leave(playerid, params[])
{
if(!IsPlayerInAnyMinigame(playerid)) return SendClientMessage(playerid, -1, "You are not in a minigame, you cannot use this command.");
new minigame = GetPlayerMinigameID(playerid);
sMinigame[playerid][minigame] = false;
SpawnPlayer(playerid);
return 1;
}
// FUNCTIONS:
stock IsPlayerInMinigame(playerid, minigame)
{
if(sMinigame[playerid][minigame]) return true;
return false;
}
stock IsPlayerInAnyMinigame(playerid)
{
new bool:found = false;
for(new i = 0; i < MAX_MINIGAMES; i ++)
{
if(sMinigame[playerid][i])
{
found = true;
break;
}
}
if(found) return true;
return false;
}
stock GetPlayerMinigameID(playerid)
{
new id = -1;
for(new i = 0; i < MAX_MINIGAMES; i ++)
{
if(sMinigame[playerid][i])
{
id = i;
break;
}
}
return id;
}
stock SpawnPlayerInMinigame(playerid, minigame)
{
switch(minigame)
{
case MINIGAME_DM:
{
SetPlayerPos(playerid, 0.0, 0.0, 0.0);
SetPlayerFacingAngle(playerid, 0.0);
SetCameraBehindPlayer(playerid);
}
case MINIGAME_DERBY:
{
SetPlayerPos(playerid, 0.0, 0.0, 0.0);
SetPlayerFacingAngle(playerid, 0.0);
SetCameraBehindPlayer(playerid);
}
}
}
stock GivePlayerMinigameWeapons(playerid, minigame)
{
switch(minigame)
{
case MINIGAME_DM:
{
GivePlayerWeapon(playerid, 26, 500);
GivePlayerWeapon(playerid, 31, 500);
}
}
}