| 
 
 
	
		
		
			| KnifeFight 1.3.8 |  |  |  | 
| inkognito6626 | Дата: Суббота, 31.08.2013, 17:42:47 | Сообщение # 1 |  |   
|  |  | Сообщений: 5 Репутация: 0 [ +/- ]
 |  | Плагин предназначен для поединка в конце раунда когда остаются 2 игрока,пытался сделать,что бы по мимо ножа выдавалось и другое оружие правда не чего не вышло оружие после появления сразу исчезает.Может ли кто помочь? 
 | Гости не могут скачивать файлы | 
 |  |  |  |  |  | 
| panorama | Дата: Суббота, 31.08.2013, 18:00:30 | Сообщение # 2 |  |   
|  |  | Сообщений: 203 Репутация: 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 код взял через декомпилятор
 
 | Гости не могут скачивать файлы | 
 
 
 Сообщение отредактировал 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 |  |   
|  |  | Сообщений: 203 Репутация: 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) Либо можно просто убрать удаление оружие которое подбираешь таймер либо вообще не хукать подбирание, вообщем сам решишь
 | Гости не могут скачивать файлы | 
 |  |  |  |  |  | 
| Nike^Pro | Дата: Воскресенье, 19.05.2019, 11:26:59 | Сообщение # 9 |  |   
|  |  | Сообщений: 31 Репутация: -3 [ +/- ]
 |  | Ребят , а кто подскажет где убрать/изменить префикс 
 
 Код [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 |  |  |  |  |  
 |