благодарю небольшой подвопрос по поводу удаления оружия у игрока и запрета на подбор оружия...
Я дам участки кода....
Code
if (IsClientInGame(client))
{
for (new slot = 0; slot < 5; slot++)
{
decl index;
if ((index = GetPlayerWeaponSlot(client, slot)) >= 0)
{
RemovePlayerItem(client, index);
}
}
}
OpenTimer != INVALID_HANDLE - заставляем игрока скинуть все оружие.
Code
public item_pickup(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if (OpenTimer != INVALID_HANDLE)
{
SDKHook(client, SDKHook_WeaponCanUse, WeaponCanUse);
}
}
Ловим момент касания к оружию: Если OpenTimer != INVALID_HANDLE то запускаем функцию запрета подбора....
Code
public Action:WeaponCanUse(client, weapon)
{
if (OpenTimer != INVALID_HANDLE)
{
return Plugin_Handled; // запретить
}
}
Игрока прошел мимо оружия...
Ошибки по факту:
1)Не всегда выкидывает гранаты почему-то...((
2)По непонятной причине игрок может подобрать оружие еще 1-2 раза ... потом только он начинает по нему ходить...((
Добавлено (12.10.2012, 14:08:38)
---------------------------------------------
+ гранаты дым и слеп не скидывает((
Добавлено (12.10.2012, 14:24:24)
---------------------------------------------
Code
public Action:ZombieTimerFunc(Handle:timer, any:x)
{
ZombieTimerSec -= 1;
if (ZombieTimerSec > 0)
{
return Plugin_Continue;
}
ZombieTimer = INVALID_HANDLE;
zombie = 1;
new client = GetRandomZombie();
decl Handle:pr2;
if ((pr2 = StartMessageAll("SayText2")) != INVALID_HANDLE)
{
BfWriteByte(pr2, Terrorist);
BfWriteByte(pr2, true);
decl String:xStR[150];
Format(xStR, sizeof(xStR), "\x01???\x03[\x01SG\x04: \x03Зомби(v0.2)\x03] \x04Убегай! %N зомби!\x01???", client);
BfWriteString(pr2, xStR);
EndMessage();
}
for (new i = 1; i <= MaxClients; i++)
{
if (IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 3)
{
if (client > 0)
{
CS_SwitchTeam(client, 2);
SetEntProp(client, Prop_Data, "m_takedamage", 2);
client = Zombies(client);
}
else
{
SetEntProp(i, Prop_Data, "m_takedamage", 2);
}
}
if (IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 3)
{
SetEntProp(i, Prop_Data, "m_takedamage", 2);
}
}
ZombieEndTimerSec = 180; // время голосования в сек.
ZombieEndTimer = CreateTimer(1.0, ZombieEndTimerFunc, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
return Plugin_Stop;
}
GetRandomZombie()
{
new indexes[MaxClients+1], players = 0;
for (new i = 1; i <= MaxClients; i++)
{
if (IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 3)
{
indexes[players++] = i;
}
}
if (players > 0) return indexes[GetRandomInt(0, players-1)];
return 0;
}
Подскажите пожалуйста почему у меня выбирает GetRandomZombie несколько игроков а не 1 ?Добавлено (13.10.2012, 12:38:29)
---------------------------------------------
гляньте плиз((