AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   CSDM (https://forums.alliedmods.net/forumdisplay.php?f=87)
-   -   Csdm mod (https://forums.alliedmods.net/showthread.php?t=89771)

raducubex 04-10-2009 09:40

Csdm mod
 
Ola,i want to now what cand i do to:
-on server,when i kill a teammate have +1 frags....like on death match...i saw that on a server..

YamiKaitou 04-10-2009 10:45

Re: Csdm mod
 
Use FFA mode

raducubex 04-10-2009 11:00

Re: Csdm mod
 
i Use ffa....and doesn't work...the plugin is all right...but on server..when i kill a teammate i have -1 frag...why?


i understand that:ffa=free for all
how can i install free for all....
1.i put plugin
2.ffa.amxx(in plugins.ini)
3.ffa active 1 in csdm.cfg
4.modules are activated
5.
[ 30] CSDM Main 2.1.1 CSDM Team csdm_ffa.amxx

what i need to do now?

raducubex 04-14-2009 08:00

Re: Csdm mod
 
SRy of double post...PoSiTiOn Of PoWeR do this for me..if you like it +karma me:D
Copyright of PoSiTiOn Of PoWeR and Alka


Code:

#include <amxmodx>
#include <fakemeta>

#define PLUGIN "Only One Team"
#define VERSION "1.0"
#define AUTHOR "Alka"

enum {
  Yes = 1,
  No = 0,
 
  T = 1,
  CT = 2
}

//Select what team can only have spawn points
//T - Terrorist , CT - Counter_Terrorist
new OnlyTeamId = CT;

//If you think that current map doesn't have enaugh
//spawn points, set this to "Yes", and the spawn points for
//specified team will be doubled.
new DoubleSpawnPoints = No;

//If you want to see where are empty/ not empty spots, while
//spawning the ents points, set this to "Yes".
new Debug = No;

new const TsSpawnClassname[] = "info_player_deathmatch";
new const CtSpawnClassname[] = "info_player_start";

new const SpawnModel[] = "models/player/vip/vip.mdl";

new FwdSpawnId;

#define OFFSET_TEAM  114
#define fm_cs_get_user_team(%1) get_pdata_int(%1, OFFSET_TEAM)

#define MAX_CLIENTS 32
new bool:TeamKill[MAX_CLIENTS + 1]

public plugin_init() {
 
  register_plugin(PLUGIN, VERSION, AUTHOR);
 
  unregister_forward(FM_Spawn, FwdSpawnId, 0);
 
  register_clcmd("say /drawspawns", "DrawSpawnPoints");
 
  register_event("DeathMsg", "EventDeathMsg", "a")
  register_message(get_user_msgid("TextMsg"), "Block_TextMsg")
  register_message(get_user_msgid("ScoreInfo"), "ScoreInfo")
}

public plugin_precache()
{
  FwdSpawnId = register_forward(FM_Spawn, "Fwd_Spawn", 0);
 
  precache_model(SpawnModel);
 
  set_task(3.0, "ShowSpawnPointsNum", 3355910);
}

public Fwd_Spawn(Ent)
{
  if(!pev_valid(Ent))
      return FMRES_IGNORED;
 
  static szClassname[32];
  pev(Ent, pev_classname, szClassname, sizeof szClassname - 1);
 
  switch(OnlyTeamId)
  {
      case 0 : { return FMRES_IGNORED; }
      case 1 :
      {
        if(equali(szClassname, CtSpawnClassname))
        {
            set_pev(Ent, pev_flags, pev(Ent, pev_flags) | FL_KILLME);
            return FMRES_OVERRIDE;
        }
        else if(equali(szClassname, TsSpawnClassname) && DoubleSpawnPoints)
        {
            for(new i = 0 ; i < 10 ; i++)
            {
              static Float:Origin[3];
             
              if(FindEmptySpot(Ent, Origin))
              {
                  static Float:Angles[3];
                  pev(Ent, pev_angles, Angles);
                 
                  new SpEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, TsSpawnClassname));
                 
                  if(!SpEnt)
                    return FMRES_IGNORED;
                 
                  engfunc(EngFunc_SetOrigin, SpEnt, Origin);
                  set_pev(SpEnt, pev_angles, Angles);
                 
                  dllfunc(DLLFunc_Spawn, SpEnt);
                 
                  break;
              }
            }
        }
      }
      case 2 :
      {
        if(equali(szClassname, TsSpawnClassname))
        {
            set_pev(Ent, pev_flags, pev(Ent, pev_flags) | FL_KILLME);
            return FMRES_OVERRIDE;
        }
        else if(equali(szClassname, CtSpawnClassname) && DoubleSpawnPoints)
        {
            for(new i = 0 ; i < 10 ; i++)
            {
              static Float:Origin[3];
             
              if(FindEmptySpot(Ent, Origin))
              {
                  static Float:Angles[3];
                  pev(Ent, pev_angles, Angles);
                 
                  new SpEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, CtSpawnClassname));
                 
                  if(!SpEnt)
                    return FMRES_IGNORED;
                 
                  engfunc(EngFunc_SetOrigin, SpEnt, Origin);
                  set_pev(SpEnt, pev_angles, Angles);
                 
                  dllfunc(DLLFunc_Spawn, SpEnt);
                 
                  break;
              }
            }
        }
      }
      case 3 : { return FMRES_IGNORED; }
  }
  return FMRES_IGNORED;
}

public ShowSpawnPointsNum()
{
  static Ent = -1;
  static EntsNum[2];
 
  while((Ent = engfunc(EngFunc_FindEntityByString, Ent, "classname", TsSpawnClassname)) != 0)
      EntsNum[0]++;
 
  while((Ent = engfunc(EngFunc_FindEntityByString, Ent, "classname", CtSpawnClassname)) != 0)
      EntsNum[1]++;
 
  server_print("[Spawn Points]In server there are %d T's | %d CT's spawn points. (Double Spawn Points : %s)", EntsNum[0], EntsNum[1], DoubleSpawnPoints ? "Enabled" : "Disabled");
}

public DrawSpawnPoints(id)
{
  if(!(get_user_flags(id) & ADMIN_IMMUNITY))
      return 1;
 
  static bool:HasTyped;
 
  if(!HasTyped)
  {
      static Ent = -1;
     
      while((Ent = engfunc(EngFunc_FindEntityByString, Ent, "classname", TsSpawnClassname)) != 0)
      {
        engfunc(EngFunc_SetModel, Ent, SpawnModel);
        set_pev(Ent, pev_effects, pev(Ent, pev_effects) & ~EF_NODRAW);
      }
     
      while((Ent = engfunc(EngFunc_FindEntityByString, Ent, "classname", CtSpawnClassname)) != 0)
      {
        engfunc(EngFunc_SetModel, Ent, SpawnModel);
        set_pev(Ent, pev_effects, pev(Ent, pev_effects) & ~EF_NODRAW);
      }
      HasTyped = true;
  }
  else
  {
      static Ent = -1;
     
      while((Ent = engfunc(EngFunc_FindEntityByString, Ent, "classname", TsSpawnClassname)) != 0)
        set_pev(Ent, pev_effects, pev(Ent, pev_effects) | EF_NODRAW);
     
      while((Ent = engfunc(EngFunc_FindEntityByString, Ent, "classname", CtSpawnClassname)) != 0)
        set_pev(Ent, pev_effects, pev(Ent, pev_effects) | EF_NODRAW);
     
      HasTyped = false;
  }
  return 1;
}

public client_putinserver(id)
{
  TeamKill[id] = false;
}
public EventDeathMsg()
{
  new Killer = read_data(1);
  new Victim = read_data(2);
       
  if(get_user_team(Killer) == get_user_team(Victim))
  {
      TeamKill[Killer] = true;
  }
}

public Block_TextMsg(msg_id, msg_type, msg_idd)
{
        if(get_msg_arg_int(1) == print_notify)
        {
            return PLUGIN_CONTINUE;
        }
   
        static s_Message[22];
        get_msg_arg_string(2, s_Message, charsmax(s_Message));
       
        if(equal(s_Message, "#Game_teammate_attack") || equal(s_Message, "#Killed_Teammate") || equal(s_Message, "#Game_teammate_kills"))
        {
            return PLUGIN_HANDLED;
        }
       
        return PLUGIN_CONTINUE;
}

public ScoreInfo(msg_id, msg_type, msg_idd)
{
  new id = get_msg_arg_int(1);
 
  if(TeamKill[id])
  {
      TeamKill[id] = false;
      new CurrentFrag = get_msg_arg_int(2);
           
      CurrentFrag += 1 + 1;
           
      set_pev(id, pev_frags, CurrentFrag * 1.0);
      set_msg_arg_int(2, ARG_SHORT, CurrentFrag);
  }
}
 
stock bool:HullVacant(Float:Origin[3], Ent)
{
  new tr;
  engfunc(EngFunc_TraceHull, Origin, Origin, 0, HULL_HUMAN, Ent, tr);
 
  if(!get_tr2(tr, TR_StartSolid) || !get_tr2(tr, TR_AllSolid))
      return true;
 
  return false;
}

stock FindEmptySpot(EntIndex, Float:Origin[3])
{
  static Float:EntOrigin[3];
  pev(EntIndex, pev_origin, EntOrigin);
 
  static Float:Num = 100.0;
 
  for(new x = 0 ; x < 2 ; x++)
  {
      EntOrigin[x] += random_float(-Num, Num);
  }
 
  if(HullVacant(EntOrigin, EntIndex))
  {
      if(Debug)
        server_print("[Spawn Points]Fined an empty spot at (%.1f %.1f %.1f), spawning ent.", EntOrigin[0], EntOrigin[1], EntOrigin[2]);
     
      Origin = EntOrigin;
      return 1;
  }
  else
  {
      if(Debug)
        server_print("[Spawn Points]Not an empty spot at (%.1f %.1f %.1f), researching.", EntOrigin[0], EntOrigin[1], EntOrigin[2]);
  }
 
  return 0;
}

10x

KWo 04-14-2009 14:55

Re: Csdm mod
 
It's hard to read Your code above. Use tags [ c o d e ] and [ / c o d e ] (without spaces) - at beginning and at the end of it - to make it more readable.
Quote:

Originally Posted by raducubex (Post 805158)
SRy of double post...PoSiTiOn Of PoWeR do this for me..if you like it +karma me:D
Copyright of PoSiTiOn Of PoWeR and Alka

Code:

#include <amxmodx>
#include <fakemeta>

#define PLUGIN "Only One Team"
#define VERSION "1.0"
#define AUTHOR "Alka"

enum {
  Yes = 1,
  No = 0,
 
  T = 1,
  CT = 2
}

//Select what team can only have spawn points
//T - Terrorist , CT - Counter_Terrorist
new OnlyTeamId = CT;

//If you think that current map doesn't have enaugh
//spawn points, set this to "Yes", and the spawn points for
//specified team will be doubled.
new DoubleSpawnPoints = No;

//If you want to see where are empty/ not empty spots, while
//spawning the ents points, set this to "Yes".
new Debug = No;

new const TsSpawnClassname[] = "info_player_deathmatch";
new const CtSpawnClassname[] = "info_player_start";

new const SpawnModel[] = "models/player/vip/vip.mdl";

new FwdSpawnId;

#define OFFSET_TEAM  114
#define fm_cs_get_user_team(%1) get_pdata_int(%1, OFFSET_TEAM)

#define MAX_CLIENTS 32
new bool:TeamKill[MAX_CLIENTS + 1]

public plugin_init() {
 
  register_plugin(PLUGIN, VERSION, AUTHOR);
 
  unregister_forward(FM_Spawn, FwdSpawnId, 0);
 
  register_clcmd("say /drawspawns", "DrawSpawnPoints");
 
  register_event("DeathMsg", "EventDeathMsg", "a")
  register_message(get_user_msgid("TextMsg"), "Block_TextMsg")
  register_message(get_user_msgid("ScoreInfo"), "ScoreInfo")
}

public plugin_precache()
{
  FwdSpawnId = register_forward(FM_Spawn, "Fwd_Spawn", 0);
 
  precache_model(SpawnModel);
 
  set_task(3.0, "ShowSpawnPointsNum", 3355910);
}

public Fwd_Spawn(Ent)
{
  if(!pev_valid(Ent))
      return FMRES_IGNORED;
 
  static szClassname[32];
  pev(Ent, pev_classname, szClassname, sizeof szClassname - 1);
 
  switch(OnlyTeamId)
  {
      case 0 : { return FMRES_IGNORED; }
      case 1 :
      {
        if(equali(szClassname, CtSpawnClassname))
        {
            set_pev(Ent, pev_flags, pev(Ent, pev_flags) | FL_KILLME);
            return FMRES_OVERRIDE;
        }
        else if(equali(szClassname, TsSpawnClassname) && DoubleSpawnPoints)
        {
            for(new i = 0 ; i < 10 ; i++)
            {
              static Float:Origin[3];
             
              if(FindEmptySpot(Ent, Origin))
              {
                  static Float:Angles[3];
                  pev(Ent, pev_angles, Angles);
                 
                  new SpEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, TsSpawnClassname));
                 
                  if(!SpEnt)
                    return FMRES_IGNORED;
                 
                  engfunc(EngFunc_SetOrigin, SpEnt, Origin);
                  set_pev(SpEnt, pev_angles, Angles);
                 
                  dllfunc(DLLFunc_Spawn, SpEnt);
                 
                  break;
              }
            }
        }
      }
      case 2 :
      {
        if(equali(szClassname, TsSpawnClassname))
        {
            set_pev(Ent, pev_flags, pev(Ent, pev_flags) | FL_KILLME);
            return FMRES_OVERRIDE;
        }
        else if(equali(szClassname, CtSpawnClassname) && DoubleSpawnPoints)
        {
            for(new i = 0 ; i < 10 ; i++)
            {
              static Float:Origin[3];
             
              if(FindEmptySpot(Ent, Origin))
              {
                  static Float:Angles[3];
                  pev(Ent, pev_angles, Angles);
                 
                  new SpEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, CtSpawnClassname));
                 
                  if(!SpEnt)
                    return FMRES_IGNORED;
                 
                  engfunc(EngFunc_SetOrigin, SpEnt, Origin);
                  set_pev(SpEnt, pev_angles, Angles);
                 
                  dllfunc(DLLFunc_Spawn, SpEnt);
                 
                  break;
              }
            }
        }
      }
      case 3 : { return FMRES_IGNORED; }
  }
  return FMRES_IGNORED;
}

public ShowSpawnPointsNum()
{
  static Ent = -1;
  static EntsNum[2];
 
  while((Ent = engfunc(EngFunc_FindEntityByString, Ent, "classname", TsSpawnClassname)) != 0)
      EntsNum[0]++;
 
  while((Ent = engfunc(EngFunc_FindEntityByString, Ent, "classname", CtSpawnClassname)) != 0)
      EntsNum[1]++;
 
  server_print("[Spawn Points]In server there are %d T's | %d CT's spawn points. (Double Spawn Points : %s)", EntsNum[0], EntsNum[1], DoubleSpawnPoints ? "Enabled" : "Disabled");
}

public DrawSpawnPoints(id)
{
  if(!(get_user_flags(id) & ADMIN_IMMUNITY))
      return 1;
 
  static bool:HasTyped;
 
  if(!HasTyped)
  {
      static Ent = -1;
     
      while((Ent = engfunc(EngFunc_FindEntityByString, Ent, "classname", TsSpawnClassname)) != 0)
      {
        engfunc(EngFunc_SetModel, Ent, SpawnModel);
        set_pev(Ent, pev_effects, pev(Ent, pev_effects) & ~EF_NODRAW);
      }
     
      while((Ent = engfunc(EngFunc_FindEntityByString, Ent, "classname", CtSpawnClassname)) != 0)
      {
        engfunc(EngFunc_SetModel, Ent, SpawnModel);
        set_pev(Ent, pev_effects, pev(Ent, pev_effects) & ~EF_NODRAW);
      }
      HasTyped = true;
  }
  else
  {
      static Ent = -1;
     
      while((Ent = engfunc(EngFunc_FindEntityByString, Ent, "classname", TsSpawnClassname)) != 0)
        set_pev(Ent, pev_effects, pev(Ent, pev_effects) | EF_NODRAW);
     
      while((Ent = engfunc(EngFunc_FindEntityByString, Ent, "classname", CtSpawnClassname)) != 0)
        set_pev(Ent, pev_effects, pev(Ent, pev_effects) | EF_NODRAW);
     
      HasTyped = false;
  }
  return 1;
}

public client_putinserver(id)
{
  TeamKill[id] = false;
}
public EventDeathMsg()
{
  new Killer = read_data(1);
  new Victim = read_data(2);
       
  if(get_user_team(Killer) == get_user_team(Victim))
  {
      TeamKill[Killer] = true;
  }
}

public Block_TextMsg(msg_id, msg_type, msg_idd)
{
        if(get_msg_arg_int(1) == print_notify)
        {
            return PLUGIN_CONTINUE;
        }
   
        static s_Message[22];
        get_msg_arg_string(2, s_Message, charsmax(s_Message));
       
        if(equal(s_Message, "#Game_teammate_attack") || equal(s_Message, "#Killed_Teammate") || equal(s_Message, "#Game_teammate_kills"))
        {
            return PLUGIN_HANDLED;
        }
       
        return PLUGIN_CONTINUE;
}

public ScoreInfo(msg_id, msg_type, msg_idd)
{
  new id = get_msg_arg_int(1);
 
  if(TeamKill[id])
  {
      TeamKill[id] = false;
      new CurrentFrag = get_msg_arg_int(2);
           
      CurrentFrag += 1 + 1;
           
      set_pev(id, pev_frags, CurrentFrag * 1.0);
      set_msg_arg_int(2, ARG_SHORT, CurrentFrag);
  }
}
 
stock bool:HullVacant(Float:Origin[3], Ent)
{
  new tr;
  engfunc(EngFunc_TraceHull, Origin, Origin, 0, HULL_HUMAN, Ent, tr);
 
  if(!get_tr2(tr, TR_StartSolid) || !get_tr2(tr, TR_AllSolid))
      return true;
 
  return false;
}

stock FindEmptySpot(EntIndex, Float:Origin[3])
{
  static Float:EntOrigin[3];
  pev(EntIndex, pev_origin, EntOrigin);
 
  static Float:Num = 100.0;
 
  for(new x = 0 ; x < 2 ; x++)
  {
      EntOrigin[x] += random_float(-Num, Num);
  }
 
  if(HullVacant(EntOrigin, EntIndex))
  {
      if(Debug)
        server_print("[Spawn Points]Fined an empty spot at (%.1f %.1f %.1f), spawning ent.", EntOrigin[0], EntOrigin[1], EntOrigin[2]);
     
      Origin = EntOrigin;
      return 1;
  }
  else
  {
      if(Debug)
        server_print("[Spawn Points]Not an empty spot at (%.1f %.1f %.1f), researching.", EntOrigin[0], EntOrigin[1], EntOrigin[2]);
  }
 
  return 0;
}

10x


raducubex 04-14-2009 14:58

Re: Csdm mod
 
OK...how you say:D


All times are GMT -4. The time now is 20:35.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.