Контакты Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » KnifeFight 1.3.8 (Нужна Помощь)
KnifeFight 1.3.8
inkognito6626 Дата: Суббота, 31.08.2013, 17:42:47 | Сообщение # 1
Сообщений: 5
Репутация: 0 [ +/- ]
Плагин предназначен для поединка в конце раунда когда остаются 2 игрока,пытался сделать,что бы по мимо ножа выдавалось и другое оружие правда не чего не вышло оружие после появления сразу исчезает.Может ли кто помочь?

Прикрепления: knifefight.sp(53.0 Kb)
 
panorama Дата: Суббота, 31.08.2013, 18:00:30 | Сообщение # 2
Сообщений: 206
Репутация: 2 [ +/- ]
Код


public Action:StartFight()
{     
     // check if one player left server
     if (ctid == 0 || tid == 0)
     {
         return;
     }
      
     // check if there are only two players
     alivect = 0, alivet = 0;
     for (new i = 1; i <= MaxClients; i++)
     {
         new team;
         if (IsClientInGame(i) && IsPlayerAlive(i))
         {
             team = GetClientTeam(i);
             if (team == 3) { alivect++; }
             else if (team == 2) { alivet++; }
         }
     }
      
     // check if there are only two players and round has  
     // not ended or bomb is not planted
     if (alivect != 1 || alivet != 1 || bombplanted)
     {
         return;
     }
      
     // start fight
     isFighting = true;
     Trace("Fight is started.");
     if (!IsPlayerAlive(ctid) || !IsPlayerAlive(tid) || (GetClientCount() < g_minplayers))
     {
         CancelFight();
         return;
     }
      
     Trace("Removing all weapons on the map.");
      
     // remove all weapons from the map
     RemoveAllWeapons();
      
     // play fight song
     if (songsfound > 0)
     {
         new randomsong = 0;
         if (songsfound > 1)
         {
             randomsong = GetRandomInt(0, songsfound - 1);
         }
         strcopy(song, sizeof(song), fightsong[randomsong]);
          
         new clients[MaxClients];
         new total = 0;
         for (new i=1; i<=MaxClients; i++)
         {
             if (IsClientInGame(i) && g_soundPrefs[i])
             {
                 clients[total++] = i;
             }
         }

         if (total)
         {
             Trace("Starting fight song.");
             EmitSound(clients, total, song,  
                 _, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, SNDVOL_NORMAL, SNDPITCH_NORMAL);
         }
     }
      
     Trace("Starting beacons.");
     // start beacons
     CreateTimer(2.0, StartBeacon, ctid, TIMER_REPEAT);
     CreateTimer(1.0, StartBeaconT, tid);

     // remove weapons from players
     PrintHintTextToAll("%t", "Removing weapons");
     WeaponHandler(ctid, 3);
     WeaponHandler(tid, 2);
      
     // switch alltalk
     if (g_alltalk)  
     {
         g_alltalkenabled = GetConVarBool(sv_alltalk);
         if ( !g_alltalkenabled )
         {
             SetConVarInt(sv_alltalk, 1);
         }
         g_alltalkenabled = !g_alltalkenabled;
     }
      
     // switch blocking
     if ( g_block )
     {
         if ( sm_noblock == INVALID_HANDLE )
         {
             sm_noblock = FindConVar("sm_noblock");
         }
         if ( sm_noblock != INVALID_HANDLE )
         {
             g_blockenabled = !GetConVarBool(sm_noblock);
             if ( !g_blockenabled )
             {
                 SetConVarInt(sm_noblock, 0);
             }
             g_blockenabled = !g_blockenabled;
         }
     }
      
     // teleport players
     if (g_useteleport)
     {
         SetEntData(ctid, g_iHealth, 400);
         SetEntData(tid, g_iHealth, 400);
         new Float:ctvec[3];
         new Float:tvec[3];
         new Float:distance[1];
         GetClientAbsOrigin(ctid,Float:ctvec);
         GetClientAbsOrigin(tid,Float:tvec);
         distance[0] = GetVectorDistance(ctvec, tvec, true);
         if (distance[0] >= 600000.0)
         {
             teleloc = ctvec;
             CreateTimer(0.1, SlapTimer, _, TIMER_REPEAT);
             CreateTimer(0.5, TeleportTimer);
         }
         else if (g_locatorbeam)
         {
             CreateTimer(0.1, DrawBeamsTimer, _, TIMER_REPEAT);
         }
     }
     else if (g_locatorbeam)
     {
         CreateTimer(0.1, DrawBeamsTimer, _, TIMER_REPEAT);
     }
      
     // display prepare to fight
     CreateTimer(1.0, Countdown, _, TIMER_REPEAT);
}



Код

// remove all weapons from the map
     RemoveAllWeapons();


Вот в этой функции удаляется оружие как раз по старту дуэли !
 
ThRunningMan Дата: Суббота, 31.08.2013, 19:13:39 | Сообщение # 3
Сообщений: 140
Репутация: 12 [ +/- ]
panorama, С такими советами выглядите нелепо ей богу, хот ьбы первел что сам автор подписал над этим действием, кое вещает "Удалить все оружие с карты" видимо чтобы не подобрали...

Добавлено (31.08.2013, 19:13:39)
---------------------------------------------

Код
public EquipKnife(client)
{
     GivePlayerItem(client, "weapon_knife");
     FakeClientCommand(client, "use weapon_knife"); // это команда вводится в консоль клиенту(игроку) чтобы он взял в руки нож, суда также пишешь тот же weapon_p90 т.е. в том же формате как     и выше строка
}


Вот функция отвечающая за выдачу оружия в данном случае это нож напиши или допиши свое оружие например weapon_p90
 
inkognito6626 Дата: Суббота, 31.08.2013, 20:27:33 | Сообщение # 4
Сообщений: 5
Репутация: 0 [ +/- ]
public EquipKnife(client)
{
GivePlayerItem(client, "weapon_knife");
FakeClientCommand(client, "use weapon_knife")

если в место knife прописывать любое другое оружие оно просто исчезает я перепробывал это и выше код все бесполезно.

есть подобный плагин Weaponfight код взял через декомпилятор

Прикрепления: KnifeFight.sp(60.2 Kb)


Сообщение отредактировал inkognito6626 - Суббота, 31.08.2013, 20:34:03
 
ThRunningMan Дата: Суббота, 31.08.2013, 21:29:56 | Сообщение # 5
Сообщений: 140
Репутация: 12 [ +/- ]
inkognito6626, Ну да у него стоит проверка что если ты подобрал не нож то удалить
Здесь
Код
public Action:EventItemPickup(Handle:event, const String:name[],bool:dontBroadcast)
{
     if ( !g_enabled || !isFighting )
     {
         return;
     }

     new clientid = GetClientOfUserId(GetEventInt(event, "userid"));
     if ( clientid == ctid || clientid == tid )
     {
         new String:item[64];
         GetEventString(event, "item", item, sizeof(item));
         if ( !StrEqual(item, "knife", false) )
         {
             FakeClientCommand(clientid, "use weapon_knife");
             // HINT: delay is needed to check isFighting  
             // before weapon remove and also
             // to prevent crashes with Gungame4 Turbo
             new Handle:pack = CreateDataPack();
             WritePackCell(pack, clientid);
             WritePackString(pack, item);
             CreateTimer(0.1, DelayWeapon, pack);
         }
     }
}

Тут несколько вариантов либо разреши оружие которое ты хочешь в условии допустим
Код

  if ( !StrEqual(item, "knife", false) )
  {
   if ( !StrEqual(item, "p90", false) )
    {

т.е. подобрал ты АК по условию это не нож и не п90 того удалит этот АК

Либо можно просто убрать удаление оружие которое подбираешь таймер либо вообще не хукать подбирание, вообщем сам решишь
 
inkognito6626 Дата: Суббота, 31.08.2013, 22:19:32 | Сообщение # 6
Сообщений: 5
Репутация: 0 [ +/- ]
Большое спасибо все работает,но есть еще один вопрос как сделать что бы каждый раунд выдавалось разное оружие ,а не одно и то же?
 
panorama Дата: Воскресенье, 01.09.2013, 08:17:20 | Сообщение # 7
Сообщений: 206
Репутация: 2 [ +/- ]
Цитата (inkognito6626)
panorama, С такими советами выглядите нелепо ей богу, хот ьбы первел что сам автор подписал над этим действием, кое вещает "Удалить все оружие с карты" видимо чтобы не подобрали...
Добавлено (31.08.2013, 19:13:39)
---------------------------------------------
Код
public EquipKnife(client)
{
     GivePlayerItem(client, "weapon_knife");
     FakeClientCommand(client, "use weapon_knife"); // это команда вводится в консоль клиенту(игроку) чтобы он взял в руки нож, суда также пишешь тот же weapon_p90 т.е. в том же формате как     и выше строка
}

Вот функция отвечающая за выдачу оружия в данном случае это нож напиши или допиши свое оружие например weapon_p90


Извиняюсь но мне казалось это первым делом надо отключать или модифицировать !
 
vanbka9 Дата: Понедельник, 02.09.2013, 00:49:27 | Сообщение # 8
Сообщений: 11
Репутация: 2 [ +/- ]
Цитата (inkognito6626)
есть еще один вопрос как сделать что бы каждый раунд выдавалось разное оружие ,а не одно и то же?

Держи готовую функцию
Цитата (ThRunningMan)
Либо можно просто убрать удаление оружие которое подбираешь таймер либо вообще не хукать подбирание, вообщем сам решишь

Прикрепления: random_weapon.sp(1.2 Kb)
 
survivors Дата: Воскресенье, 19.05.2019, 11:26:59 | Сообщение # 9
Сообщений: 25
Репутация: 0 [ +/- ]
Ребят , а кто подскажет где убрать/изменить префикс

Код
[KnifeFight] PbICb 1 yxo отверг предложение!
 
Wanted_69 Дата: Воскресенье, 19.05.2019, 17:37:06 | Сообщение # 10
Сообщений: 11
Репутация: 0 [ +/- ]
Цитата survivors ()
survivors


Не забывай и об


Код
SendKnifeMenus(ct,t)
{
ctagree = -1;
tagree = -1;

new String:msg[MAX_CHAT_SIZE];
if (IsFakeClient(ct) || g_fightPrefs[ct] == 1)
{
Format(msg, sizeof(msg), "%c[%cKnifeFight%c] %c%s %c%t",
GREEN, YELLOW, GREEN, isColorMsg ? TEAMCOLOR : YELLOW, ctname, GREEN, "Player agrees");
CHAT_SayText(0, ct, msg);
ctagree = 1;
}
else if (g_fightPrefs[ct] == -1)
{
Format(msg, sizeof(msg), "%c[%cKnifeFight%c] %c%s %c%t",
GREEN, YELLOW, GREEN, isColorMsg ? TEAMCOLOR : YELLOW, ctname, GREEN, "Player disagrees");
CHAT_SayText(0, ct, msg);
ctagree = 0;
EmitSoundToAll(g_declinesound);
}
else
{
SendKnifeMenu(ct);
}

if (IsFakeClient(t) || g_fightPrefs[t] == 1)
{
Format(msg, sizeof(msg), "%c[%cKnifeFight%c] %c%s %c%t",
GREEN, YELLOW, GREEN, isColorMsg ? TEAMCOLOR : YELLOW, tname, GREEN, "Player agrees");
CHAT_SayText(0, t, msg);
tagree = 1;
}
else if (g_fightPrefs[t] == -1)
{
Format(msg, sizeof(msg), "%c[%cKnifeFight%c] %c%s %c%t",
GREEN, YELLOW, GREEN, isColorMsg ? TEAMCOLOR : YELLOW, tname, GREEN, "Player disagrees");
CHAT_SayText(0, t, msg);
tagree = 0;
EmitSoundToAll(g_declinesound);
}
else
{
SendKnifeMenu(t);
}

if ( ctagree == 1 && tagree == 1)
{
Format(msg, sizeof(msg), "%c[%cKnifeFight%c] %c%t",
GREEN, YELLOW, GREEN, GREEN, "Both agree");
CHAT_SayText(0, 0, msg);
CreateTimer(0.5, DelayFight);
}
}


Сообщение отредактировал Wanted_69 - Воскресенье, 19.05.2019, 17:38:57
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » KnifeFight 1.3.8 (Нужна Помощь)
  • Страница 1 из 1
  • 1
Поиск: