Wiki

Clone wiki

EFLC-Multiplayer / API Player Events

On Player

Connect

#!c++
//REGISTER ON MAIN: apiPlayerEvents::registerPlayerJoin(onPlayerConnect); 
bool onPlayerConnect(int playerid)
{
    //Only getIp() is available at this connection stage
    //Deny the player connection if their IP is "192.168.0.1"
    if(strcmp(apiPlayer::get(playerid).getIp(), "192.168.0.1") == 0)
    {
        return false; //returning false makes the server drop the player connection
    }
    return true;
}

Credentials

#!c++
//REGISTER ON MAIN: apiPlayerEvents::registerPlayerCredentials(onPlayerCredentials)
bool onPlayerCredentials(int playerid)
{
    //The player has successfully connected here. You can use all the apiPlayer class methods.
    apiPlayer::get(playerid).setSkin(1613899343); //Changes the player skin to NIKO's model

    apiMath::Vector3 spawnPos(-205.476f, 630.067f, 13.8088f); //Creates a vector with Central Park coordinates
    apiPlayer::get(playerid).spawn(spawnPos); //Finally we tell the player to Spawn
    return true;
}

Respawn

#!c++
//REGISTER ON MAIN: apiPlayerEvents::registerPlayerRespawn(onPlayerRespawn)
bool onPlayerRespawn(int playerid)
{
    //This function is called when the player respawn after dying
    apiPlayer::get(playerid).removeWeapon(0); //Remove all weapons
    return true;
}

Disconnect

#!c++
//REGISTER ON MAIN: apiPlayerEvents::registerPlayerLeft(onPlayerLeft)
void onPlayerLeft(int playerid, int reason)
{
   if(reason == 0)
   {
       char buf[50] = "";
       sprintf_s(buf, "%s used /q", apiPlayer::get(playerid).getNick());
       apiPlayer::sendMsgToAll(buf, 0xFF0000FF);
   }
   else if(reason == 1)
   {
       //Do nothing
   }
}

AFK

#!c++
//REGISTER ON MAIN: apiPlayerEvents::registerPlayerAfk(onPlayerAfk)
void onPlayerAfk(int playerid, bool status)
{
    if(!status) return; //No longet AFK
    char buf[50] = "";
    sprintf_s(buf, "%s is afk", apiPlayer::get(playerid).getNick());
    apiPlayer::sendMsgToAll(buf, 0xFF0000FF);
}

Swap Weapon

#!c++
//REGISTER ON MAIN: apiPlayerEvents::registerPlayerWeaponChanged(onPlayeChangeWeapon)
bool onPlayeChangeWeapon(int playerid, int weapon, int ammo)
{
    //Lets prevent players from using RPGs
    if(weapon == 18) return false; //Returning false will block the change
    return true;
}

Weapons updated

#!c++
//REGISTER ON MAIN: apiPlayerEvents::registerPlayerWeaponsArrived(onPlayerWeaponsUpdated)
bool onPlayerWeaponsUpdated(int playerid)
{
    //This event is only trigged by the requestWeapons() method
    apiPlayer::player& p = apiPlayer::get(playerid);

    char buffer[40] = "";
    int bWeapon = 0, bAmmo = 0;

    unsigned int size = p.getWeaponsSize();
    for(unsigned int i = 0; i < size; i++)
    {
        p.getWeaponData(i, bWeapon, bAmmo);
        sprintf_s(buffer, "Weapon: %i, Ammo: %i", bWeapon, bAmmo);
        p.sendMsg(buffer, 0xFFFFFFFF);
    }
    return true;
}

Chat

#!c++
//REGISTER ON MAIN: apiPlayerEvents::registerPlayerChat(onPlayerChat)
void onPlayerChat(int playerid, const char* chat)
{
     //A full example for this event is available at the demo project
     char buffer[130] = "";
     sprintf_s(buffer, "%s: %s", apiPlayer::get(playerid).getNick(), chat);
     apiPlayer::sendMsgToAll(buffer, 0xFFFFFFFF);
}

Death

#!c++
//REGISTER ON MAIN: apiPlayerEvents::registerPlayerDeath(onPlayerDeath)
void onPlayerDeath(int playerid, int agentType, int agentId)
{
   if(agentType == 0 && apiPlayer::isOn(agentId))
   {
      //They were killed by another player
   }
   else if(agentType == 1 && apiVehicle::isVehicle(agentId))
   {
      //They were killed by a vehicle  
   }
}

HP Change

#!c++
//REGISTER ON MAIN: apiPlayerEvents::registerPlayerHpChange(onPlayerHpChanged)
void onPlayerHpChanged(int playerid, int agentType, int agentId)
{
    //This function is called when the player HP changes
    //Use the example "onPlayerDeath" for reference
}

Armor change

#!c++
//REGISTER ON MAIN: apiPlayerEvents::registerPlayerArmor(onPlayerArmorChanged)
void onPlayerArmorChanged(int playerid, int newValue)
{
    if(newValue > apiPlayer::get(playerid).getArmor())
    {
        //Is the player using hacks?... If you say so
        apiPlayer::get(playerid).setArmor(0);
    }
}

Dialog List Response

#!c++
//REGISTER ON MAIN: apiPlayerEvents::registerPlayerDialogListResponse(onPlayerDialogResponse)
void onPlayerDialogResponse(int playerid, unsigned int dialogId, int buttonId, int rowId)
{
    //A full example is available at the demo project
    //buttonId: 1 left btn, 0 right btn
    //rowId: 0 - row amount or -1 if none were selected
}

Left Vehicle

#!c++
//REGISTER ON MAIN: apiPlayerEvents::registerLeftVehicle(onPlayerLeftVehicle)
void onPlayerLeftVehicle(int playerid, int vehicleId, int seatId)
{
    //WARNING: Do NOT delete the vehicle in this event

    //vehicleId: ID of the vehicle the player was inside
    //seatId: 0 being the driver's seat and 1-5 as passenger seats
}

Entered vehicle

#!c++
//REGISTER ON MAIN: apiPlayerEvents::registerEnteredVehicle(onPlayerEnteredVehicle)
void onPlayerEnteredVehicle(int playerid, int vehicleId, int seatId)
{
    //WARNING: Do NOT delete the vehicle in this event
    //The player is inside the vehicle
    bool drivingLicense = true; //Add your logic for this
    if(seatId == 0 && !drivingLicense)
    {
        apiPlayer::get(playerid).removeFromVehicle();
    }
}

Entering Vehicle

#!c++
//REGISTER ON MAIN: apiPlayerEvents::registerEnteringVehicle(onPlayerRequestVehicleEntry)
void onPlayerRequestVehicleEntry(int playerid, int vehicleId, int seatId, bool carjack)
{
    //WARNING: Do NOT delete the vehicle in this event
    //The player entering the vehicle

    if(carjack)
    {
        apiPlayer::get(playerid).removeFromVehicle();
        apiPlayer::get(playerid).sendMsg("Please dont carjack", 0xFFFF0000);
    }
}

Enter Checkpoint

#!c++
//REGISTER ON MAIN: apiPlayerEvents::registerPlayerEnterCP(onPlayerEnterCheckPoint)
void onPlayerEnterCheckPoint(int playerid, int checkpointId)
{
    //The player is inside the checkpoint radius
    char buffer[40] = "";
    sprintf_s(buffer, "You are inside checkpoint: %i", checkpointId);
    apiPlayer::get(playerid).sendMsg(buffer, 0xFFFFFFFF);
}

Exit checkpoint

#!c++
//REGISTER ON MAIN: apiPlayerEvents::registerPlayerExitCP(onPlayerExitCheckPoint)
void onPlayerExitCheckPoint(int playerid, int checkpointId)
{
    //The player is no longer inside the checkpoint radius
}

Updated