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

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

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Фраги за раунд
Фраги за раунд
Scarface_slv Дата: Пятница, 06.04.2012, 23:59:32 | Сообщение # 1
Сообщений: 738
Репутация: 61 [ +/- ]
в общем не знаю с каким событием это делается, да и вообще не понимаю:

1.За один раунд какой либо игрок набрал 4 фрага
2.И ему сразу пишет PrintToChatAll("вы набрали 4 фрага")
3.А не в конце раунда или не в начале нового раунда
4.Ну и в следующим раунде уже новый отсчет до 4 фрагов для всех игроков и так постоянно

через нее можно? HookEvent("round_start", round_start)
 
_wS_ Дата: Суббота, 07.04.2012, 09:21:46 | Сообщение # 2
Code
new frags[MAXPLAYERS+1];

player_spawn
{
     frags[client] = 0;
}

player_death
{
     frags[attacker_client] += 1;
     if (frags[attacker_client] == 4)
     {
         PrintToChat(attacker_client, "Вы набрали 4 фрага");
     }
}
 
Scarface_slv Дата: Суббота, 07.04.2012, 14:31:55 | Сообщение # 3
Сообщений: 738
Репутация: 61 [ +/- ]
я понял что я вообще не понимаю HookEvent у меня плагин не работает и как только я не делаю не работает
1.<error>frags.smx
Code

#include <sourcemod>

new frags[MAXPLAYERS+1];  

public OnPluginStart()
{
    HookEvent("player_spawn", player_spawn, EventHookMode_Post);
    HookEvent("player_dead", player_dead, EventHookMode_Pre);
}

public player_spawn(Handle:event, const String:name[], bool:dontBroadcast)  
{  
    new client = GetClientOfUserId(GetEventInt(event, "userid"));  
    frags[client] = 0;  
}

public Action:player_dead(Handle:event, const String:name[], bool:dontBroadcast)  
{
     new attacker_client =  GetEventInt(event, "attacker")   
     new attacker = GetClientOfUserId(attacker_client)
     frags[attacker] += 1;
     if (frags[attacker] == 4)
     {
       PrintToChat(attacker, "Вы набрали 4 фрага");
     }  
     return Plugin_Continue;
}

grust
 
_wS_ Дата: Суббота, 07.04.2012, 15:41:34 | Сообщение # 4
Нет события player_dead.. Есть player_death
 
Scarface_slv Дата: Суббота, 07.04.2012, 19:17:30 | Сообщение # 5
Сообщений: 738
Репутация: 61 [ +/- ]
ой хд

Добавлено (07.04.2012, 16:17:10)
---------------------------------------------
Спасибо, не заметил) и компилятор ниче не сказал) klas

Добавлено (07.04.2012, 19:17:30)
---------------------------------------------
у меня снова вопрос как проверить игрока есть ли у него определенное оружие awp например, в evente

 
_wS_ Дата: Суббота, 07.04.2012, 19:26:16 | Сообщение # 6
С помощью GetPlayerWeaponSlot и GetEntityClassname
 
Scarface_slv Дата: Суббота, 07.04.2012, 20:49:37 | Сообщение # 7
Сообщений: 738
Репутация: 61 [ +/- ]
вообщем у меня получилось с GetPlayerWeaponSlot
пример:
Code

#include <sourcemod>
#include <sdktools>
#include <cstrike>   

public OnPluginStart()
{
    HookEvent("player_spawn", player_spawn, EventHookMode_Post);
}

public Action:player_spawn(Handle:event, const String:name[], bool:dontBroadcast)  
{
     new client = GetClientOfUserId(GetEventInt(event, "userid"));
  if (GetPlayerWeaponSlot(client, 2))
  {
      PrintToChatAll("У вас есть нож");
     }
  else PrintToChatAll("У вас нет ножа");
}

а вот с помощью GetEntityClassname нет
не могу понять что такое index
Code

#include <sourcemod>
#include <sdktools>
#include <cstrike>   

public OnPluginStart()
{
    HookEvent("player_spawn", player_spawn, EventHookMode_Post);
}

public Action:player_spawn(Handle:event, const String:name[], bool:dontBroadcast)  
{
  decl String:knife[25];
  if (GetEntityClassname(index, knife, sizeof(knife)));  
  {
      PrintToChatAll("У вас есть нож");
     }
  else PrintToChatAll("У вас нет ножа");
}
 
_wS_ Дата: Суббота, 07.04.2012, 20:58:22 | Сообщение # 8
Индекс это как уникальное имя, ключ. Есть userid, есть индекс, есть handle. GetPlayerWeaponSlot возвращает индекс оружия или -1, если его нет. И используя этот индекс, можешь узнать все что нужно:

Code
new index = GetPlayerWeaponSlot(client, 2);
if (index > 0)
{
     decl String:class[20];
     GetEntityClassname(index, class, 20);
     PrintToChatAll("index = %d, classname = %s", index, class);
}
else PrintToChatAll("Оружия нет");


Индекс это целое уникальное число. Вот пример объектов с de_cbble:
http://world-source.ru/de_cbble_entities.txt

ents - это просто имя группы (не важно). Ниже 0 - это индекс, а внутри classname - что это за объект и его параметры, которые можно изменять/узнавать только с помощью индекса.
 
Scarface_slv Дата: Воскресенье, 08.04.2012, 10:58:33 | Сообщение # 9
Сообщений: 738
Репутация: 61 [ +/- ]
Спасибо большое=)

Добавлено (08.04.2012, 10:22:20)
---------------------------------------------
SetEntProp(attacker, Prop_Data, "m_ArmorValue", 100, 4); вот так дает броню без шлема, а как дать с шлемом?

Добавлено (08.04.2012, 10:58:33)
---------------------------------------------
сорри нашел:

Code

new armor = GetEntProp(attacker,Prop_Send,"m_ArmorValue");
val = 100
SetEntProp(attacker, Prop_Data, "m_ArmorValue", val);
SetEntProp(attacker, Prop_Send, "m_bHasHelmet", val?1:0);
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Фраги за раунд
  • Страница 1 из 1
  • 1
Поиск: