Error 21: Symbol already defined "OnPlayerTakeDamage"
#1

I get this error when compiling the DM script
Code:
C:\Users\harvey\Desktop\Server\filterscripts\Untitled.pwn(479) : error 021: symbol already defined: "OnPlayerTakeDamage"
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


1 Error.
This is the whole script.
Code:
//include
#include <a_samp>
#include <dini>
#include <dudb>
#include <zcmd>
#include <sscanf>
//-----------------------------
#pragma unused ret_memcpy
//---------------------------------
//define
#define SERVER_GM_TEXT "D-GangWars v.001"
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_ORANGE 0xFF9900AA
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA
//------------------------

//teams
#define TEAM_GROVE 1
#define TEAM_Crips 2
#define TEAM_LOS_SANTOS_VAGOS 3
#define TEAM_VARIOS_LOS_AZTECAS 4
#define TEAM_LSPD 5
#define TEAM_ANARCHIST 6
#define TEAM_HOBO 7
//---------------------------
#define SERVER_USER_FILE "users/%s.ini"
#define TEAM_GROVE_COLOR 0x00FF00AA // Bright Green
#define TEAM_BALLA_COLOR 0xFF00FFAA // Bright Purple
#define TEAM_LOS_SANTOS_VAGOS_COLOR 0xAFAFAFAA // Grey
#define TEAM_VARIOS_LOS_AZTECAS_COLOR 0x33CCFFAA // Light Blue
#define TEAM_HOBO_COLOR 0x993300AA // Brown
//-------------------------

// - bones
#define BODY_PART_TORSO     (3)
#define BODY_PART_GROIN     (4)
#define BODY_PART_LEFT_ARM  (5)
#define BODY_PART_RIGHT_ARM (6)
#define BODY_PART_LEFT_LEG  (7)
#define BODY_PART_RIGHT_LEG (8)
#define BODY_PART_HEAD      (9)

enum pData
{
    pAdminLevel,
    pCash,
    pScore,
    pBan
}
new PlayerData[MAX_PLAYERS][pData];
new levels,Nam[MAX_PLAYER_NAME],pname[MAX_PLAYER_NAME],str[128],ID;
//------
new gPlayerLogged[MAX_PLAYERS];
new gTeam[MAX_PLAYERS];
new gPlayerClass[MAX_PLAYERS];
//-----
enum TeamCars
{
Bloods,
LSPD,
Hobo,
Crips,
ANARCHIST,
Cops,
AZTECAS

}
new Cars[TeamCars];

//forwards
forward SetupPlayerForClassSelection(playerid);
forward OnPlayerHeadShot(playerid, issuerid, Float:amount);
forward OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart);
forward OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid);
forward OnPlayerWeaponShot( playerid, weaponid, hittype, hitid, Float: fX, Float: fY, Float: fZ );

public OnPlayerConnect(playerid)
{
    SendClientMessage(playerid, COLOR_ORANGE,"====================[Welcome]==================");
    SendClientMessage(playerid, COLOR_GREY,"Welcome to Los Santos Team Deathmatch.");
    // SendClientMessage(playerid, COLOR_GREY,"Use you command for help and your command to see the rules.");
    SendClientMessage(playerid, COLOR_ORANGE,"================================================");

    gPlayerLogged[playerid] = 0;
    new name[MAX_PLAYER_NAME], file[256];
    GetPlayerName(playerid, name, sizeof(name));
    format(file, sizeof(file), SERVER_USER_FILE, name);
    if (!dini_Exists(file))
    {
        ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Hi you're not registered", "Welcome, You are not registered in our database, enter your password below", "Register", "Leave");
    }
    if(fexist(file))
    {
        ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "You are registered", "Enter your password below", "Login", "Leave");
    }
    return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    new name[MAX_PLAYER_NAME], file[256];
    GetPlayerName(playerid, name, sizeof(name));
    format(file, sizeof(file), SERVER_USER_FILE, name);
    if(gPlayerLogged[playerid] == 1)
    {
        dini_IntSet(file, "Score", PlayerData[playerid][pScore]);
        dini_IntSet(file, "Money", PlayerData[playerid][pCash]);
        dini_IntSet(file, "AdminLevel",PlayerData[playerid][pAdminLevel]);
        dini_IntSet(file, "Banned", PlayerData[playerid][pBan]);
    }
    gPlayerLogged[playerid] = 0;
    return 1;
}
public OnGameModeInit()
{
    SetGameModeText ("LS-TDM Rev 3.1");
    SetTeamCount(2);
    Cars[Bloods]= AddPlayerClass(19, 2494.5767,-1686.1864,13.5129,355.7687,0,0,0,0,0,0); // Bloods
    Cars[Bloods]= AddStaticVehicle(566,2504.6165,-1682.2120,13.1676,11.5484,3,3);  //bloodscar0
    Cars[Bloods]= AddStaticVehicle(566,2508.5613,-1679.7991,13.3848,10.1013,3,3); // bloodscar1
    Cars[Bloods]= AddStaticVehicle(560,2499.1650,-1683.3696,13.0231,11.1869,3,3); // bloodscar2
    Cars[Bloods]= AddStaticVehicle(560,2491.1704,-1682.9939,13.2519,3.8113,3,3); // bloodscar3
    Cars[Bloods]= AddStaticVehicle(536,2486.7319,-1683.1348,13.2257,6.0132,3,3); // bloodscar4
    Cars[Bloods]= AddStaticVehicle(536,2512.3042,-1676.9368,13.1989,11.6676,3,3); // bloodscar5
    Cars[Bloods]= AddStaticVehicle(475,2483.3882,-1682.8966,13.0427,1.4005,3,3); // bloodscar6
    Cars[Bloods]= AddStaticVehicle(468,2513.1646,-1670.0023,13.0755,102.7341,3,3); // bloodsbike1
    Cars[Bloods]= AddStaticVehicle(468,2512.9490,-1666.9865,13.1306,91.7290,3,3); // bloodsbike2
    Cars[Bloods]= AddStaticVehicle(468,2512.5134,-1663.8923,13.1505,90.4309,3,3); // bloodsbike3

    Cars[Crips]= AddPlayerClass(143, 1999.8833,-1120.6167,26.7746,181.6846,0,0,0,0,0,0); //Crips
    Cars[Crips]= AddStaticVehicle(566,1948.2378,-1131.5389,25.4572,90.2552,79,79); // cripscar0
    Cars[Crips]= AddStaticVehicle(566,1941.4482,-1131.4258,25.2050,90.5242,79,79); // cripscar1
    Cars[Crips]= AddStaticVehicle(560,1934.8057,-1131.4783,24.9225,91.1032,79,79); // cripscar2
    Cars[Crips]= AddStaticVehicle(560,1927.4950,-1131.5046,24.7885,90.1411,79,79); // cripscar3
    Cars[Crips]= AddStaticVehicle(536,1921.0233,-1131.7767,24.6739,90.1544,79,79); // cripscar4
    Cars[Crips]= AddStaticVehicle(536,1944.6661,-1143.2561,25.1773,353.6760,79,79); // cripsbike1
    Cars[Crips]= AddStaticVehicle(471,1937.8147,-1143.0463,24.9998,359.4231,79,79); // cripsbike2
    Cars[Crips]= AddStaticVehicle(471,1941.4227,-1143.1160,25.0893,2.3917,79,79); // cripsbike3

    Cars[AZTECAS]= AddPlayerClass(116,2522.2378,-2000.4359,13.5469,128.5352,0,0,0,0,0,0);  //Aztecas
    Cars[AZTECAS]= AddStaticVehicle(566,1844.2039,-1927.9865,13.1998,89.6847,116,116); // aztecascar0
    Cars[AZTECAS]= AddStaticVehicle(566,1837.5275,-1928.0200,13.1228,89.8919,116,116); // aztecascar1
    Cars[AZTECAS]= AddStaticVehicle(560,1851.5607,-1928.0968,13.1904,90.1852,116,116); // aztecascar2
    Cars[AZTECAS]= AddStaticVehicle(536,1857.9548,-1927.9910,13.0882,89.1671,116,116); // aztecascar3
    Cars[AZTECAS]= AddStaticVehicle(536,1864.5150,-1927.9908,13.1197,89.4659,116,116); // aztecascar4
    Cars[AZTECAS]= AddStaticVehicle(468,1845.3577,-1939.6879,13.0989,358.2544,116,116); // aztecasbike1
    Cars[AZTECAS]= AddStaticVehicle(468,1848.4471,-1939.7332,13.1173,358.5280,116,116); // aztecasbike2
    Cars[AZTECAS]= AddStaticVehicle(468,1852.2606,-1939.7489,13.1123,0.9635,116,116); // aztecasbike3


    Cars[LSPD]= AddPlayerClass(265,1550.6207,-1675.7418,15.4894,86.4241,0,0,0,0,0,0); //Tenpenny
    Cars[LSPD]= AddStaticVehicle(427,1534.0969,-1686.4365,13.5910,179.3800,0,1); // LSPDTRUCK1
    Cars[LSPD]= AddStaticVehicle(596,1533.9149,-1661.6329,13.1821,179.4230,0,1); // LSPDCAR1
    Cars[LSPD]= AddStaticVehicle(596,1533.9535,-1648.1016,13.1825,181.0566,0,1); // LSPDCAR2
    Cars[LSPD]= AddStaticVehicle(596,1534.2207,-1638.7291,13.1814,178.9015,0,1); // LSPDCAR3
    Cars[LSPD]= AddStaticVehicle(523,1542.1992,-1683.5516,13.1198,93.8415,0,0); // LSPDBIKE1
    Cars[LSPD]= AddStaticVehicle(523,1542.2690,-1667.6261,13.1238,90.6924,0,0); // LSPDBIKE2

    Cars[ANARCHIST]= AddPlayerClass(247,1304.3652,-1091.9817,25.7654,177.3955,0,0,0,0,0,0);//biker
    Cars[ANARCHIST]= AddStaticVehicle(566,1297.8812,-1099.4774,25.6601,180.3320,7,121); // bikerCAR1
    Cars[ANARCHIST]= AddStaticVehicle(560,1301.1383,-1100.0808,25.7716,182.8269,0,74); // bikerCAR2
    Cars[ANARCHIST]= AddStaticVehicle(463,1306.7966,-1100.1927,25.2962,184.3666,6,25); // bikerBIKE1
    Cars[ANARCHIST]= AddStaticVehicle(463,1304.4956,-1099.9102,25.3941,181.8885,45,60); // bikerBIKE2
    Cars[ANARCHIST]= AddStaticVehicle(445,1314.0208,-1100.9015,25.5036,177.5006,47,21); // bikerCAR4

    Cars[Hobo]= AddPlayerClass(137,2536.4011,-2049.3030,13.5500,85.0934,0,0,0,0,0,0); //Hobo
    Cars[Hobo]= AddStaticVehicle(604,2536.8438,-2056.4309,13.5500,358.9964,1,1); //HOBOCAR
    Cars[Hobo]= AddStaticVehicle(462,2545.8027,-2050.4395,13.5500,91.1173,1,1); //HOBOCAR1
    Cars[Hobo]= AddStaticVehicle(462,2545.1934,-2048.0740,13.5500,98.6374,1,1); //HOBOCAR2
    Cars[Hobo]= AddStaticVehicle(605,2537.3225,-2041.9825,13.5500,186.0816,1,1); //HOBOCAR3
    return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
    SetPlayerClass(playerid, classid);
    SetupPlayerForClassSelection(playerid);
    gPlayerClass[playerid] = classid;

    switch (classid)
       {

        case 0:
            {
                GameTextForPlayer(playerid, "~r~Bloods", 500, 6);
                SetPlayerColor(playerid,COLOR_RED);
            }

       case 1:
            {
                GameTextForPlayer(playerid, "~b~Crips", 500, 6);
                SetPlayerColor(playerid,0xFF00FFAA); // 0xFF00FFAA
            }

       case 2:
            {
                GameTextForPlayer(playerid,"~b~~h~~h~Aztecas",500,6);
            }

       case 3:
            {
                GameTextForPlayer(playerid,"LSPD",500,6);
            }
       case 4:
            {
                GameTextForPlayer(playerid,"~r~Bikers",500,6);
            }
       case 5:
            {
                GameTextForPlayer(playerid,"~y~Hobo",500,6);
            }
       }

    return 1;

 }

SetPlayerClass(playerid, classid)
{
    switch(classid)
    {
        case 0..3: gTeam[playerid] = TEAM_GROVE;
        case 4..6: gTeam[playerid] = TEAM_Crips;
        case 7..9: gTeam[playerid] = TEAM_LOS_SANTOS_VAGOS;
        case 10..13: gTeam[playerid] = TEAM_VARIOS_LOS_AZTECAS;
        case 14..16: gTeam[playerid] = TEAM_LSPD;
        case 17..19: gTeam[playerid] = TEAM_ANARCHIST;
        case 20..23: gTeam[playerid] = TEAM_HOBO;

    }
    return 1;
}

public OnPlayerRequestSpawn(playerid)
{
    SetupPlayerForClassSelection(playerid);
    return 1;
}

public SetupPlayerForClassSelection(playerid)

{

    SetPlayerInterior(playerid,0);
    SetPlayerPos(playerid,1969.6920,-1199.5493,25.2605);
    SetPlayerCameraPos(playerid,1971.6920,-1205.5493,26.2605);
    SetPlayerCameraLookAt(playerid,1969.6920,-1199.5493,25.2605);

    ApplyAnimation(playerid,"GANGS","prtial_gngtlkB",4.1,0,0,0,0,0);
}
//admin commands
CMD:makeadmin(playerid, params[])
{
    if(!IsPlayerAdmin(playerid))return 0; //This command only works for rcon
    if(sscanf(params,"ui",ID,levels)) return SendClientMessage(playerid,0xFF9900AA, "USAGE: /setadmin [ID] [Level 1-6]");//it will show this if you dont use the format properly
    if(levels > 6) return SendClientMessage(playerid,0xFF0000FF,"LEVELS AVAILABLE 1-6!");//Available levels
    if(!IsPlayerConnected(ID))return SendClientMessage(playerid,COLOR_GREY,"That user is not connected.");//Detect if the id/partofname is connected
    if(PlayerData[ID][pAdminLevel] == levels) return SendClientMessage(playerid,0xFF0000FF, "ERROR: That person is already this admin level!");//Detect if the guy is already the level you setted
    GetPlayerName(playerid,Nam, MAX_PLAYER_NAME);//define the playerid name
    GetPlayerName(ID,pname,MAX_PLAYER_NAME);//define the other person name
    if(levels == 0)
    {
        format(str, sizeof(str),"%s has your Admin level to %d on the server.",Nam,levels);
        SendClientMessage(ID,0xFF9900AA,str);
        format(str, sizeof(str),"You had set %s Admin level to %d!",pname,levels);
        SendClientMessage(playerid,0xFF9900AA,str);
        PlayerData[ID][pAdminLevel] = levels;//this sets the player level
        return 1;
    }
    format(str, sizeof(str),"%s has your Admin level to %d on the server.",Nam,levels);
    SendClientMessage(ID,0xFF9900AA,str);
    format(str, sizeof(str),"You had set %s Admin level to %d!",pname,levels);
    SendClientMessage(playerid,0xFF9900AA,str);
    PlayerData[ID][pAdminLevel] = levels;
    return 1;
}

CMD:apm(playerid, params[])
{
    new str2[128], id;
    if(PlayerData[playerid][pAdminLevel] < 1) return SendClientMessage(playerid, COLOR_GREY, "You are not authorized to use this command.");
    if(sscanf(params, "us[128]", id, str2)) return SendClientMessage(playerid, COLOR_GREY, "Usage: /apm [ID] [MESSAGE]");
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_GREY, "ERROR: Player Isnt Connected");
    if(playerid == id) return SendClientMessage(playerid, COLOR_GREY, "You can't send your self a message");
    new Name1[MAX_PLAYER_NAME], Name2[MAX_PLAYER_NAME], string[256];
    GetPlayerName(playerid, Name1, sizeof(Name1));
    GetPlayerName(id, Name2, sizeof(Name2));
    format(str, sizeof(str), "%s has APMed %s: %s", Name1, Name2, str2);
    SendClientMessage(playerid,COLOR_ORANGE, string);
    format(str, sizeof(str), "Admin: %s", str2);
    SendClientMessage(id, COLOR_RED, str);
    return 1;
}
CMD:kill(playerid, params[])
{
    SetPlayerHealth(playerid,0);
    SendClientMessage(playerid, COLOR_RED, "You have killed yourself.");
    return 1;
}

CMD:veh(playerid, params[])
{
    if(PlayerData[playerid][pAdminLevel] < 1) return SendClientMessage(playerid, COLOR_RED, " ** You must be a level 1 Admin to use that! ");
    if(isnull(params)) return SendClientMessage(playerid, COLOR_RED, "Use /veh [vehicle id]");
    if(strval(params) < 400 || strval(params) > 611) return SendClientMessage(playerid, COLOR_RED, "Invalid vehicle model.");
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    CreateVehicle(strval(params), x+2, y+2, z, 90.0, 0, 0, 0);
    return 1;
}
/*CMD:me(playerid, params[])
{
    new str2[128];
    new Name1[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name1, sizeof(Name1));
    if(sscanf(params, "us[128]", str2)) return SendClientMessage(playerid, COLOR_GREY, "Usage: /me [action]");
    GetPlayerName(playerid, str, sizeof(str));
    format(str, sizeof(str), "* %s %s", Name1, str2);
    SendClientMessageToAll(0xFFFF00AA, str2);
    return 1;
}*/
CMD:me(playerid, params[])
{
    if(isnull(params)) return SendClientMessage(playerid, 0xFFFFFFFF, "/me [text]");
    new
        string[128],
        pName[28 char]
    ;
    GetPlayerName(playerid, pName, sizeof(pName));
    format(string, sizeof(string), "* %s %s *", pName, params);
    return SendClientMessageToAll(0xFFFFFFFF, string);
}
CMD:vehdestroy(playerid, params[])
{
    if(PlayerData[playerid][pAdminLevel] < 1) return SendClientMessage(playerid, COLOR_GREY, "You are not authorized to use this command.");
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_GREY, "You must be inside a vehicle to destroy it.");
    new testcar= GetPlayerVehicleID(playerid);
    SendClientMessage(playerid, 0xFFFFFFFF, "You have deleted a car!!");
    DestroyVehicle(testcar);
    return 1;
}

CMD:givegun(playerid, params[])
{
    new id, gun, ammo;
    if(PlayerData[playerid][pAdminLevel] < 1) return SendClientMessage(playerid, COLOR_RED, " ** You must be a level 1 Admin to use that! ");
    if(sscanf(params,"uii", id, gun, ammo)) return SendClientMessage(playerid, -1,"USAGE: /givegun [playerid/partofname] [gunid] [ammo]");
    if(gun > 47 || gun < 1) return SendClientMessage(playerid, -1,"GUN ID'S: 1-47");
    if(ammo > 999 || ammo < 1) return SendClientMessage(playerid, -1,"Ammo 1-999");
    GivePlayerWeapon(id, gun, ammo);
    return 1;
}

CMD:kick(playerid, params[])
{
        if(PlayerData[playerid][pAdminLevel] >= 1) {
        new PID; //define the playerid we wanna kick
        new reason[64]; //the reason, put into a string
        new string[128]; //a new message string
        new name1[MAX_PLAYERS], name2[MAX_PLAYERS];
        if(sscanf(params, "us[64]", PID,reason)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /kick [playerid] [reason]"); //tell sscanf if the parameters/the syntax is written wrong to return a message (PID and the reason used here)
        if(!IsPlayerConnected(PID)) // if the ID is wrong or not connected, return a message! (PID used here)
        return SendClientMessage(playerid, COLOR_GREY, "Player is not connected!");
        format(str, sizeof(str), "'%s' has been kicked by administrator '%s'. Reason: %s ", name2, name1, reason); //format the string we've defined to send the message, playername and adminname are used to receive the information about the names
        SendClientMessageToAll(COLOR_RED, string); //send that message to all
        SetTimer("kick", 500, false);
        Kick(PID); //kick the playerid we've defined
        }
        else //if he has not got the permissions
        {
            SendClientMessage(playerid, COLOR_GREY, "You have to be level 3 to use that command!"); //return this message
        }
        return 1;
}
CMD:ban(playerid, params[])
{
        if(PlayerData[playerid][pAdminLevel] >= 1) {
        new PID; //define the playerid we wanna kick
        new reason[64]; //the reason, put into a string
        new string[128]; //a new message string
        new name1[MAX_PLAYERS], name2[MAX_PLAYERS];
        if(sscanf(params, "us[64]", PID,reason)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /kick [playerid] [reason]"); //tell sscanf if the parameters/the syntax is written wrong to return a message (PID and the reason used here)
        if(!IsPlayerConnected(PID)) // if the ID is wrong or not connected, return a message! (PID used here)
        return SendClientMessage(playerid, COLOR_GREY, "Player is not connected!");
        format(str, sizeof(str), "'%s' has been banned by administrator '%s'. Reason: %s ", name2, name1, reason); //format the string we've defined to send the message, playername and adminname are used to receive the information about the names
        SendClientMessageToAll(COLOR_RED, string); //send that message to all
        SetTimer("kick", 500, false);
        Ban(PID); //kick the playerid we've defined
        }
        else //if he has not got the permissions
        {
            SendClientMessage(playerid, COLOR_GREY, "You have to be level 3 to use that command!"); //return this message
        }
        return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if (dialogid == 1)
    {
        new name[MAX_PLAYER_NAME], file[256], string[128];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return
        ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Hi your not registered", "Welcome, You are not registrated, enter your password below", "Register", "Leave");
        dini_Create(file);
        dini_IntSet(file, "Password", udb_hash(inputtext));
        dini_IntSet(file, "AdminLevel",PlayerData[playerid][pAdminLevel] = 0);
        dini_IntSet(file, "Money",PlayerData[playerid][pCash] = 4500);
        dini_IntSet(file, "Score",PlayerData[playerid][pScore] = 0);
        dini_IntSet(file, "Banned",PlayerData[playerid][pBan] = 0);
        format(string, 128, "[SYSTEM]: You succesfully registered the nickname %s with password %s, you have been auto logged in.", name, inputtext);
        SendClientMessage(playerid, COLOR_YELLOW, string);
        gPlayerLogged[playerid] = 1;
    }
    if (dialogid == 2)
    {
        new name[MAX_PLAYER_NAME], file[256];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "You are registered", "Enter your password below", "Login", "Leave");
        new tmp;
        tmp = dini_Int(file, "Password");
        if(udb_hash(inputtext) != tmp) {
            SendClientMessage(playerid, COLOR_RED, "Incorrect Password.");
            ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "You are registrated", "Enter your password below", "Login", "Leave");
        }
        else
        {
            gPlayerLogged[playerid] = 1;
            PlayerData[playerid][pAdminLevel] = dini_Int(file, "AdminLevel");
            SetPlayerScore(playerid, PlayerData[playerid][pScore]);
            GivePlayerMoney(playerid, dini_Int(file, "Money")-GetPlayerMoney(playerid));
            SendClientMessage(playerid,COLOR_RED, "[SYSTEM]: Successfully logged in!");
        }
    }
    return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
    SendDeathMessage(killerid, playerid, reason);
    GivePlayerMoney(killerid, 250); // + 250
    // SetPlayerScore(killerid, + 1);
    SetPlayerScore(killerid, PlayerData[killerid][pScore] + 1);
    return 1;
}
public OnPlayerSpawn(playerid)
{
    GivePlayerWeapon(playerid,24,500);
    if(gTeam[playerid] != 1)
    {
        //RemovePlayerFromVehicle(playerid);
        SetPlayerColor(playerid,0xFF00FFAA);
        return 1;
    }
    if(gTeam[playerid] != 2)
    {
        //RemovePlayerFromVehicle(playerid);
        SetPlayerColor(playerid,COLOR_GREEN);
        return 1;
    }
    return 1;
}


public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
    new Float:HP;
    GetPlayerHealth(playerid, HP);
    if(weaponid == 24) SetPlayerHealth(playerid, HP-45);//DesertEagle
    if(weaponid == 31) SetPlayerHealth(playerid, HP-30);//M4
    if(weaponid == 34) SetPlayerHealth(playerid, HP-100);//SniperRifle
    if(weaponid == 25) SetPlayerHealth(playerid, HP-60);//PumpShotgun
    return 1;
}
public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
{
    if(bodypart == BODY_PART_HEAD)
    {
        if(issuerid == INVALID_PLAYER_ID && playerid == INVALID_PLAYER_ID) return 0;
        return CallLocalFunction("OnPlayerHeadShot", "iif", playerid, issuerid, amount);
    }
    return true;
}

public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
{
    PlayerPlaySound(playerid, 17802, 0.0, 0.0, 0.0); // Ding Sound
    return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate==PLAYER_STATE_PASSENGER)
    {
        new gun,tmp;
        GetPlayerWeaponData(playerid,4,gun,tmp);
        #pragma unused tmp
        if(gun)SetPlayerArmedWeapon(playerid,gun);
        else SetPlayerArmedWeapon(playerid,0);
    }
    return 1;
}

new
    gLastShot[ MAX_PLAYERS ];

#define HOLDING(%0) \
    ((newkeys & (%0)) == (%0))

public OnPlayerKeyStateChange( playerid, newkeys, oldkeys )
{
    if ( ( tickcount( ) - gLastShot[ playerid ] ) < 750 )
    {
        if ( HOLDING( KEY_JUMP | KEY_SPRINT | KEY_CROUCH ) )
        {
            new
                Float: pPos[ 3 ];
            GetPlayerPos( playerid, pPos[ 0 ], pPos[ 1 ], pPos[ 2 ] );
            SetPlayerPos( playerid, pPos[ 0 ], pPos[ 1 ], pPos[ 2 ] + 10.0 );

            GameTextForPlayer( playerid, "~r~Stop c-bugging fool!", 1000, 3 );

            gLastShot[ playerid ] = -1;

            return 1;
        }
        if ( newkeys & KEY_CROUCH )
        {
            SetTimerEx( "__check", 200, false, "i", playerid );
        }
    }

    return 1;
}

forward __check( playerid );
public __check( playerid )
{
    if ( GetPlayerSpecialAction( playerid ) == SPECIAL_ACTION_DUCK )
        return 1;

    new
        Float: pPos[ 3 ];
    GetPlayerPos( playerid, pPos[ 0 ], pPos[ 1 ], pPos[ 2 ] );
    SetPlayerPos( playerid, pPos[ 0 ], pPos[ 1 ], pPos[ 2 ] + 10.0 );

    GameTextForPlayer( playerid, "~r~Stop c-bugging fool!!", 1000, 3 );

    gLastShot[ playerid ] = -1;

    return 1;
}

public OnPlayerWeaponShot( playerid, weaponid, hittype, hitid, Float: fX, Float: fY, Float: fZ )
{
    gLastShot[ playerid ] = tickcount( );

    return 1;
}

public OnPlayerHeadShot(playerid, issuerid, Float:amount)
{
    new
        up_string[ 128 ],
        pk_string[ 128 char ],
        pName[ MAX_PLAYER_NAME ];
    GetPlayerName(issuerid, pName, sizeof(pName));

    strunpack(up_string, pk_string);

    format(up_string, sizeof(up_string), "[DEBUG] - Headshot detected executed by %s[%i] - damage %.3f", pName, playerid, amount);
    SendClientMessage(playerid, -1, up_string);

    return strpack(up_string, pk_string);
}
Reply
#2

You have two OnPlayerTakeDamage declarations:
PHP Code:
public OnPlayerTakeDamage(playeridissueridFloatamountweaponid)
{
    new 
Float:HP;
    
GetPlayerHealth(playeridHP);
    if(
weaponid == 24SetPlayerHealth(playeridHP-45);//DesertEagle
    
if(weaponid == 31SetPlayerHealth(playeridHP-30);//M4
    
if(weaponid == 34SetPlayerHealth(playeridHP-100);//SniperRifle
    
if(weaponid == 25SetPlayerHealth(playeridHP-60);//PumpShotgun
    
return 1;
}
public 
OnPlayerTakeDamage(playeridissueridFloat:amountweaponidbodypart)
{
    if(
bodypart == BODY_PART_HEAD)
    {
        if(
issuerid == INVALID_PLAYER_ID && playerid == INVALID_PLAYER_ID) return 0;
        return 
CallLocalFunction("OnPlayerHeadShot""iif"playeridissueridamount);
    }
    return 
true;

Reply
#3

Quote:
Originally Posted by JordanZaundd
View Post
You have two OnPlayerTakeDamage declarations:
PHP Code:
public OnPlayerTakeDamage(playeridissueridFloatamountweaponid)
{
    new 
Float:HP;
    
GetPlayerHealth(playeridHP);
    if(
weaponid == 24SetPlayerHealth(playeridHP-45);//DesertEagle
    
if(weaponid == 31SetPlayerHealth(playeridHP-30);//M4
    
if(weaponid == 34SetPlayerHealth(playeridHP-100);//SniperRifle
    
if(weaponid == 25SetPlayerHealth(playeridHP-60);//PumpShotgun
    
return 1;
}
public 
OnPlayerTakeDamage(playeridissueridFloat:amountweaponidbodypart)
{
    if(
bodypart == BODY_PART_HEAD)
    {
        if(
issuerid == INVALID_PLAYER_ID && playerid == INVALID_PLAYER_ID) return 0;
        return 
CallLocalFunction("OnPlayerHeadShot""iif"playeridissueridamount);
    }
    return 
true;

How do I fix it? I don't know how to put two functions under a callback..
Reply
#4

PHP Code:
public OnPlayerTakeDamage(playeridissueridFloatamountweaponid

    new 
Float:HP
    
GetPlayerHealth(playeridHP); 
    if(
weaponid == 24SetPlayerHealth(playeridHP-45);//DesertEagle 
    
if(weaponid == 31SetPlayerHealth(playeridHP-30);//M4 
    
if(weaponid == 34SetPlayerHealth(playeridHP-100);//SniperRifle 
    
if(weaponid == 25SetPlayerHealth(playeridHP-60);//PumpShotgun 
    
if(bodypart == BODY_PART_HEAD
    { 
        if(
issuerid == INVALID_PLAYER_ID && playerid == INVALID_PLAYER_ID) return 0
        return 
CallLocalFunction("OnPlayerHeadShot""iif"playeridissueridamount); 
    } 
    return 
1

Reply
#5

Quote:
Originally Posted by Dice_
View Post
PHP Code:
public OnPlayerTakeDamage(playeridissueridFloatamountweaponid

    new 
Float:HP
    
GetPlayerHealth(playeridHP); 
    if(
weaponid == 24SetPlayerHealth(playeridHP-45);//DesertEagle 
    
if(weaponid == 31SetPlayerHealth(playeridHP-30);//M4 
    
if(weaponid == 34SetPlayerHealth(playeridHP-100);//SniperRifle 
    
if(weaponid == 25SetPlayerHealth(playeridHP-60);//PumpShotgun 
    
if(bodypart == BODY_PART_HEAD
    { 
        if(
issuerid == INVALID_PLAYER_ID && playerid == INVALID_PLAYER_ID) return 0
        return 
CallLocalFunction("OnPlayerHeadShot""iif"playeridissueridamount); 
    } 
    return 
1

Thank you! +rep
Reply
#6

Quote:
Originally Posted by Dice_
View Post
PHP Code:
public OnPlayerTakeDamage(playeridissueridFloatamountweaponid

    new 
Float:HP
    
GetPlayerHealth(playeridHP); 
    if(
weaponid == 24SetPlayerHealth(playeridHP-45);//DesertEagle 
    
if(weaponid == 31SetPlayerHealth(playeridHP-30);//M4 
    
if(weaponid == 34SetPlayerHealth(playeridHP-100);//SniperRifle 
    
if(weaponid == 25SetPlayerHealth(playeridHP-60);//PumpShotgun 
    
if(bodypart == BODY_PART_HEAD
    { 
        if(
issuerid == INVALID_PLAYER_ID && playerid == INVALID_PLAYER_ID) return 0
        return 
CallLocalFunction("OnPlayerHeadShot""iif"playeridissueridamount); 
    } 
    return 
1

Why isn't body part included in public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid) ?
Reply
#7

Quote:
Originally Posted by Dice_
View Post
PHP Code:
public OnPlayerTakeDamage(playeridissueridFloatamountweaponid

    new 
Float:HP
    
GetPlayerHealth(playeridHP); 
    if(
weaponid == 24SetPlayerHealth(playeridHP-45);//DesertEagle 
    
if(weaponid == 31SetPlayerHealth(playeridHP-30);//M4 
    
if(weaponid == 34SetPlayerHealth(playeridHP-100);//SniperRifle 
    
if(weaponid == 25SetPlayerHealth(playeridHP-60);//PumpShotgun 
    
if(bodypart == BODY_PART_HEAD
    { 
        if(
issuerid == INVALID_PLAYER_ID && playerid == INVALID_PLAYER_ID) return 0
        return 
CallLocalFunction("OnPlayerHeadShot""iif"playeridissueridamount); 
    } 
    return 
1

It gets me the error now.
Code:
C:\Users\harvey\Desktop\Server\filterscripts\Untitled.pwn(476) : error 017: undefined symbol "bodypart"
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


1 Error.
Reply
#8

Update your Server Package with the newer one.
EDIT: your OnPlayerTakeDamage should look like this

PHP Code:
public OnPlayerTakeDamage(playeridissueridFloatamountweaponidbodypart
Reply
#9

Quote:
Originally Posted by Dice_
View Post
Update your Server Package with the newer one.
EDIT: your OnPlayerTakeDamage should look like this

PHP Code:
public OnPlayerTakeDamage(playeridissueridFloatamountweaponidbodypart
Yup, I just added bodypart to it, it works now, Thanks!
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)