Burak yanlış...
include dosyası icine colorchat.inc atsan bile arıza verecektir.
Kod: Tümünü seç
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <engine>
#include <xs>
#include <hamsandwich>
#include <fun>
#define PLUGIN "JailBreak Koruma Kopek"
#define VERSION "1.2.0"
#define AUTHOR "Hamza[Baba]"
enum Color
{
NORMAL = 1, // clients scr_concolor cvar color
GREEN, // Green Color
TEAM_COLOR, // Red, grey, blue
GREY, // grey
RED, // Red
BLUE, // Blue
}
new TeamName[][] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
}
ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
static message[256];
switch(type)
{
case NORMAL: // clients scr_concolor cvar color
{
message[0] = 0x01;
}
case GREEN: // Green
{
message[0] = 0x04;
}
default: // White, Red, Blue
{
message[0] = 0x03;
}
}
vformat(message[1], 251, msg, 4);
// Make sure message is not longer than 192 character. Will crash the server.
message[192] = '^0';
static team, ColorChange, index, MSG_Type;
if(id)
{
MSG_Type = MSG_ONE;
index = id;
} else {
index = FindPlayer();
MSG_Type = MSG_ALL;
}
team = get_user_team(index);
ColorChange = ColorSelection(index, MSG_Type, type);
ShowColorMessage(index, MSG_Type, message);
if(ColorChange)
{
Team_Info(index, MSG_Type, TeamName[team]);
}
}
ShowColorMessage(id, type, message[])
{
message_begin(type, get_user_msgid("SayText"), _, id);
write_byte(id)
write_string(message);
message_end();
}
Team_Info(id, type, team[])
{
message_begin(type, get_user_msgid("TeamInfo"), _, id);
write_byte(id);
write_string(team);
message_end();
return 1;
}
ColorSelection(index, type, Color:Type)
{
switch(Type)
{
case RED:
{
return Team_Info(index, type, TeamName[1]);
}
case BLUE:
{
return Team_Info(index, type, TeamName[2]);
}
case GREY:
{
return Team_Info(index, type, TeamName[0]);
}
}
return 0;
}
FindPlayer()
{
static i;
i = -1;
while(i <= get_maxplayers())
{
if(is_user_connected(++i))
{
return i;
}
}
return -1;
}
#define KOPEK_SALDIR 76
#define KOPEK_KOS 4
#define KOPEK_DUR 1
#define KOPEK_OL 109
new Kopekk;
/* Köpek Entity İsmi */
new const KopekClass[] = "ent_kopek";
/* Köpek Öldü */
new bool: KopekOldu;
/* Köpek Oluştu */
new bool: KopekVar
/* Köpek Hareket Kontrolleri */
new bool: zipladim;
new bool: doluyum;
new bool: yuru;
new bool: saldir;
new bool: dur;
/* Köpek Hareket */
new Hareket;
/* Köpek Hedefi */
new KopekHedef;
/* Köpek Sahibi */
new Sahip;
/* Kan Spr Dosyaları */
new kan_spr, kan_spr_sprey
/* Köpek Modeli */
new const KopekModel[] = "models/player/terror.mdl";
/* Köpek Yönetim Sesleri */
new const Sesler[][] = {
"JBKopek/kopek_olustu.wav",
"JBKopek/kopek_hasar.wav",
"JBKopek/kopek_oldu.wav",
"JBKopek/kopek_saldir.wav",
"JBKopek/kopek_gel.wav",
"JBKopek/Saldir.wav"
}
/* Cvar Ayarları */
new cvar_kopek_olumsuzluk, cvar_kopek_kiskanclik, cvar_kopek_can, cvar_kopek_bilgiler;
new sync
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
/* Köpek Oluştur */
register_clcmd( "say /kopek", "Kopek_Olustur" );
/* Köpeği Yok Et */
register_clcmd( "say /git", "Kopek_Yolla" );
/* Köpeği Çağır */
register_clcmd( "say /gel", "Kopek_Gel" );
/* Round Başlangıcı Köpeği Yok Et */
register_logevent( "logevent_round_start", 2, "1=Round_Start" );
/* Cvar Ayarları */
cvar_kopek_olumsuzluk = register_cvar( "npc_kopek_olumsuzluk", "0" );
cvar_kopek_kiskanclik = register_cvar( "npc_kopek_kiskanclik", "1" );
cvar_kopek_can = register_cvar( "npc_kopek_can", "300" );
cvar_kopek_bilgiler = register_cvar( "npc_kopek_bilgiler", "1" );
/* Köpeğin Beyni */
register_think( KopekClass, "Think_Kopek" );
/* Köpeğe Emir Ver */
register_forward( FM_EmitSound, "fw_EmitSound" );
RegisterHam( Ham_Killed, "info_target", "Killed_Kopek" );
RegisterHam( Ham_TakeDamage, "info_target", "TakeDamage_Kopek" );
RegisterHam( Ham_Player_Jump, "player", "Hm_PlayerJump", 1 );
RegisterHam( Ham_TraceAttack, "info_target", "TraceAttack_Kopek" );
sync = CreateHudSyncObj( );
}
public plugin_precache( )
{
kan_spr = precache_model( "sprites/blood.spr" );
kan_spr_sprey = precache_model( "sprites/bloodspray.spr" );
precache_model( KopekModel );
precache_sound( Sesler[ 0 ] );
precache_sound( Sesler[ 1 ] );
precache_sound( Sesler[ 2 ] );
precache_sound( Sesler[ 3 ] );
precache_sound( Sesler[ 4 ] );
precache_sound( Sesler[ 5 ] );
}
public Bilgiler( Task )
{
new id = Task - 1453;
if( id == Sahip )
{
new szMesaj[ 128 ], name[ 64 ];
if( is_user_alive( KopekHedef ) )
{
get_user_name( KopekHedef, name, charsmax( name ) );
formatex( szMesaj, charsmax( szMesaj ), "Kopek Can : [ %i ]^n%s' a Saldiriyor...", pev( Kopekk, pev_health ), name );
}
else
{
if( Hareket == KOPEK_DUR )
{
formatex( szMesaj, charsmax( szMesaj ), "Kopek Can : [ %i ]^nBeklemede...", pev( Kopekk, pev_health ) );
}
else if( Hareket == KOPEK_KOS )
{
formatex( szMesaj, charsmax( szMesaj ), "Kopek Can : [ %i ]^nTakipte...", pev( Kopekk, pev_health ) );
}
}
set_hudmessage(255, 255, 255, 0.01, 0.16, 0, 6.0, 1.0)
ShowSyncHudMsg( id, sync, szMesaj );
}
set_task( 0.5, "Bilgiler", id + 1453 );
if( !KopekVar || !Sahip || KopekOldu )
{
remove_task( id + 1453 );
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public logevent_round_start( )
{
if( KopekVar )
{
remove_task( Sahip + 1453 );
remove_entity_name( KopekClass );
KopekVar = false;
Sahip = -1;
KopekHedef = -1;
}
}
public Hm_PlayerJump( id )
{
if( KopekVar )
{
if( Sahip == id )
{
if( !( pev( id, pev_oldbuttons ) & IN_JUMP ) && ( pev( id, pev_flags ) & FL_ONGROUND ) )
{
zipladim = true;
}
}
}
return HAM_IGNORED;
}
public Kopek_Olustur( id )
{
if( !is_user_alive( id ) )
return PLUGIN_HANDLED;
if( get_user_team( id ) != 2 )
return PLUGIN_HANDLED;
if( KopekVar ) {
ColorChat( id, NORMAL, "^3Zaten Bir Kopege Sahipsiniz !" );
return PLUGIN_HANDLED;
}
Sahip = id;
ColorChat( id, NORMAL, "^3Koruma Kopek Olusturuldu .." );
Kopek_Olustur_Ent( id );
return PLUGIN_HANDLED;
}
public Kopek_Yolla( id )
{
if( !is_user_alive( id ) )
return PLUGIN_HANDLED;
if( get_user_team( id ) != 2 )
return PLUGIN_HANDLED;
if( !KopekVar ) {
ColorChat( id, NORMAL, "^3Zaten Kopeginiz Yok !" );
return PLUGIN_HANDLED;
}
remove_task( id + 1453 );
Sahip = -1;
KopekHedef = -1;
KopekVar = false;
KopekOldu = true;
remove_entity_name( KopekClass );
ColorChat( id, NORMAL, "^3Koruma Kopek Gonderildi .." );
return PLUGIN_HANDLED;
}
public Kopek_Gel( id )
{
if( !is_user_alive( id ) )
return PLUGIN_HANDLED;
if( get_user_team( id ) != 2 )
return PLUGIN_HANDLED;
if( !KopekVar )
return PLUGIN_HANDLED;
KopekHedef = -1;
doluyum = false;
yuru = true;
Hareket = KOPEK_KOS;
new Float:origin[ 3 ];
get_offset_origin_body( id, Float:{ 80.0,0.0,0.0 }, origin );
origin[ 2 ] += 10.0;
set_pev( Kopekk, pev_origin, origin );
emit_sound( id, CHAN_VOICE, Sesler[ 4 ], VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
return PLUGIN_HANDLED;
}
public Kopek_Olustur_Ent( id )
{
if( !is_user_alive( id ) )
return;
KopekOldu = false;
KopekVar = true;
new iEnt = create_entity( "info_target" );
entity_set_string( iEnt, EV_SZ_classname, KopekClass );
new Float: Origin[ 3 ] = { 0.0, 0.0, 0.0 };
new Float: Angle[ 3 ] = { 0.0, 0.0, 0.0 };
pev( id, pev_origin, Origin );
pev( id, pev_angles, Angle );
Origin[ 2 ] += 70;
Origin[ 1 ] += 100;
entity_set_origin( iEnt, Origin );
Angle[ 0 ] = 0.0;
entity_set_vector( iEnt, EV_VEC_angles, Angle );
entity_set_model( iEnt, KopekModel );
entity_set_int( iEnt, EV_INT_movetype, MOVETYPE_PUSHSTEP );
entity_set_int( iEnt, EV_INT_solid, SOLID_BBOX );
entity_set_float( iEnt, EV_FL_takedamage, 1.0 );
entity_set_float( iEnt, EV_FL_health, float( get_pcvar_num( cvar_kopek_can ) ) );
entity_set_float( iEnt, EV_FL_gravity, 3.0 );
entity_set_int( iEnt, EV_INT_deadflag, DEAD_NO );
new Float: mins[3] = {-7.0, -15.0, -38.0 }
new Float: maxs[3] = { 7.0, 40.0, 4.0 }
entity_set_size( iEnt, mins, maxs );
drop_to_floor( iEnt );
if( get_pcvar_num( cvar_kopek_bilgiler ) == 1 ) {
set_task( 1.0, "Bilgiler", id + 1453 );
}
Kopekk = iEnt;
Hareket = KOPEK_DUR;
Util_PlayAnimation( iEnt, KOPEK_DUR );
emit_sound( iEnt, CHAN_VOICE, Sesler[ 0 ], VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
entity_set_float( iEnt, EV_FL_nextthink, get_gametime() + 0.1 );
}
public TakeDamage_Kopek( iEnt, inflictor, attacker, Float:damage, bits )
{
new Kopek[ 64 ];
entity_get_string( iEnt, EV_SZ_classname, Kopek, charsmax( Kopek ) );
if( equali( Kopek, KopekClass ) )
{
if( get_pcvar_num( cvar_kopek_olumsuzluk ) == 1 ) return HAM_SUPERCEDE;
if( attacker != Sahip )
{
if( !KopekHedef || !is_user_alive( KopekHedef ) )
{
KopekHedef = attacker;
yuru = true;
saldir = true;
doluyum = true;
Hareket = KOPEK_SALDIR;
}
}
emit_sound( iEnt, CHAN_VOICE, Sesler[ 1 ], VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
}
return HAM_IGNORED;
}
public TraceAttack_Kopek( iEnt, attacker, Float: damage, Float: direction[3], trace, damageBits )
{
if( !is_valid_ent( iEnt ) )
return;
new Kopek[ 64 ];
entity_get_string( iEnt, EV_SZ_classname, Kopek, charsmax( Kopek ) )
if( equali( Kopek, KopekClass ) )
{
if( get_pcvar_num( cvar_kopek_olumsuzluk ) == 1 ) return;
new Float: end[ 3 ];
get_tr2( trace, TR_vecEndPos, end );
message_begin( MSG_BROADCAST,SVC_TEMPENTITY );
write_byte( TE_BLOODSPRITE );
engfunc( EngFunc_WriteCoord, end[ 0 ] );
engfunc( EngFunc_WriteCoord, end[ 1 ] );
engfunc( EngFunc_WriteCoord, end[ 2 ] );
write_short( kan_spr_sprey );
write_short( kan_spr );
write_byte( 247 );
write_byte( random_num( 3, 12 ) );
message_end();
}
}
public Killed_Kopek( iEnt, Attacker )
{
new Kopek[ 64 ];
entity_get_string( iEnt, EV_SZ_classname, Kopek, charsmax( Kopek ) );
if( equali( Kopek, KopekClass ) )
{
new Float: Zero[ 3 ] = { 0.0, 0.0, 0.0 }
Util_PlayAnimation( iEnt, KOPEK_OL );
entity_set_int( iEnt, EV_INT_movetype, MOVETYPE_FLY );
entity_set_int( iEnt, EV_INT_solid, SOLID_NOT );
entity_set_vector( iEnt, EV_VEC_velocity, Zero );
entity_set_int( iEnt, EV_INT_deadflag, DEAD_DYING );
entity_set_float(iEnt, EV_FL_takedamage, 0.0);
/* Öldüğünde Hedefi Sıfırla */
KopekHedef = -1;
emit_sound( iEnt, CHAN_VOICE, Sesler[ 2 ], VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
remove_task( Sahip + 1453 );
/* Köpek Ölmüştür */
KopekOldu = true;
/* Köpeğin Varlığı Sona Ermiştir */
KopekVar = false;
////
Hareket = KOPEK_DUR;
/* Ölüyü Yok Et */
set_task( 2.0, "Oluyu_Kaldir", iEnt );
}
return HAM_SUPERCEDE;
}
public Oluyu_Kaldir( iEnt )
{
/* Entityi Kaldır */
remove_entity( iEnt );
}
public fw_EmitSound( id, iChannel, szSound[], Float:flVol, Float:flAtt, iFlags, iPitch )
{
if( equal( szSound, "common/wpn_denyselect.wav" ) && Sahip == id && KopekVar && !KopekOldu )
{
new szKopek[ 64 ];
new Hedef, Vucut, Float: Uzaklik;
Uzaklik = get_user_aiming( id, Hedef, Vucut );
entity_get_string( Hedef, EV_SZ_classname, szKopek, charsmax( szKopek ) );
if( Hedef )
{
if( Hedef != KopekHedef && !equali( szKopek, KopekClass ) )
{
if( Uzaklik < 1200.0)
{
KopekHedef = Hedef;
yuru = true;
saldir = true;
doluyum = true;
Hareket = KOPEK_SALDIR;
emit_sound( id, CHAN_VOICE, Sesler[ 5 ], VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
}
else
{
ColorChat( id, NORMAL, "^4Hedef Cok Uzakta !" );
return;
}
}
if( equali( szKopek, KopekClass ) )
{
if( Uzaklik < 100.0 )
{
set_hudmessage(255, 255, 255, -1.0, 0.3, 0, 6.0, 4.0)
show_hudmessage( id , "Aferin Oglum :)" );
emit_sound( Hedef, CHAN_VOICE, Sesler[ 1 ], VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
}
}
}
}
}
public Think_Kopek( iEnt )
{
static Kopek[ 64 ];
entity_get_string( iEnt, EV_SZ_classname, Kopek, charsmax( Kopek ) );
if( !equali( KopekClass, Kopek ) )
return;
if( KopekOldu )
{
saldir = true;
yuru = true;
doluyum = false;
return;
}
switch( Hareket )
{
/* Koşma Hareketi */
case KOPEK_SALDIR:
{
/* 1- Köpeğin Origini 2- Hedefin Origini 3- Vektör( Doğruları Birleştir Mat9- Mat10 :) ) 4- Dönüş Açısı */
static Float: KopekOrigin[ 3 ], Float: HedefOrigin[ 3 ], Float: Vector[ 3 ], Float: Angle[ 3 ];
/* Köpek ile Hedef Arasındaki Uzaklık */
static Float: Uzaklik2;
/* Köpeğin Saldırı Anındaki Hızını Kontrol Et */
static bool: SaldiriHizi;
/* Köpeğin Hedefi Yaşamıyorsa Değişkenleri Sıfırla ve Sahibine Yönlendir */
if ( !is_user_alive( KopekHedef ) || !KopekHedef )
{
SaldiriHizi = false;
saldir = true;
yuru = true;
Hareket = KOPEK_KOS;
doluyum = false;
entity_set_float( iEnt, EV_FL_nextthink, get_gametime() + 0.5 );
return;
}
/* Köpek İçin Yürüme Hareketi */
if ( yuru )
{
entity_set_int( iEnt, EV_INT_movetype, MOVETYPE_PUSHSTEP );
Util_PlayAnimation( iEnt, KOPEK_KOS );
yuru = false;
}
/* Hedef Yaşıyorsa Onu Takip Et */
if( is_user_alive( KopekHedef ) )
{
/* Köpeğin Origini */
entity_get_vector( iEnt, EV_VEC_origin, KopekOrigin );
/* Hedefin Origini */
entity_get_vector( KopekHedef, EV_VEC_origin, HedefOrigin );
/* Koordinat Karşılaştırmasını Yap ve Uzaklığı Bul */
Uzaklik2 = get_distance_f( KopekOrigin, HedefOrigin );
/* Vektörün Bulunuşu */
xs_vec_sub( HedefOrigin, KopekOrigin, Vector );
/* Vektörü Açıya Çevir, Köpeğin Açısını Ayarla */
vector_to_angle( Vector, Angle );
/* Uzaklik Kontrolünü Yap, Yakınsa Saldırıyı Başlat, Uzaksa Kontrole Devam */
if( Uzaklik2 <= 60.0 )
{
if( saldir )
{
/* Saldiri Hizina Gec */
SaldiriHizi = true;
/* Köpeğin Hızını Hesapla ve Dengele( Ziplayarak Saldir ) */
static Float:velocity[3];
entity_get_vector( iEnt, EV_VEC_velocity, velocity );
velocity[ 2 ] += 1.0;
entity_set_vector( iEnt, EV_VEC_velocity, velocity );
/* Saldiri Hareketi */
Util_PlayAnimation( iEnt, KOPEK_SALDIR );
/* Saldirma İşlemi Bitmiştir */
saldir = false;
/* Köpek Dolu Değil :) */
doluyum = false;
/* Hedefe Zararı Ver */
ExecuteHamB( Ham_TakeDamage, KopekHedef, 0, Sahip, 600.0, DMG_BULLET );
/* Isırma Sesi */
emit_sound( iEnt, CHAN_VOICE, Sesler[ 3 ], VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
/* Hedef Ölü/Canlı Kontrol Eğer Hala Canlı İse Tekrar Saldır */
if( is_user_alive( KopekHedef ) )
{
SaldiriHizi = false;
saldir = true;
}
}
}
static Float:num;
if( !SaldiriHizi ) {
num = floatsqroot( float( 500 ) * float( 500 ) / ( Vector[ 0 ] * Vector[ 0 ] + Vector[ 1 ] * Vector[ 1 ] + Vector[ 2 ] * Vector[ 2 ] ) );
}
else
{
num = floatsqroot( float( 190 ) * float( 190 ) / ( Vector[ 0 ] * Vector[ 0 ] + Vector[ 1 ] * Vector[ 1 ] + Vector[ 2 ] * Vector[ 2 ] ) );
}
Vector[ 0 ] *= num;
Vector[ 1 ] *= num;
Vector[ 2 ] ? ( Vector[ 2 ] = 0.0 ) : ( Vector[ 2 ] *= num );
entity_set_vector( iEnt, EV_VEC_velocity, Vector );
Angle[ 0 ] = 0.0;
Angle[ 2 ] = 0.0;
entity_set_vector( iEnt, EV_VEC_angles, Angle );
/* 0.3 Saniye Sonra Tekrar Hayata Bağlan */
entity_set_float( iEnt, EV_FL_nextthink, get_gametime() + 0.3 );
return;
}
}
/* Durma Hareketi */
case KOPEK_DUR:
{
/* Hedef Kontrolü */
static tempid;
/* Köpek Durma Hareketi */
if( dur )
{
Util_PlayAnimation( iEnt, KOPEK_DUR );
dur = false;
}
/* Sahibin Yaşamıyorsa Dur */
if ( !is_user_alive( Sahip ) )
{
if( dur )
{
Util_PlayAnimation( iEnt, KOPEK_DUR );
dur = false;
}
entity_set_float( iEnt, EV_FL_nextthink, get_gametime() + 1.0 );
yuru = true;
return;
}
/* Eğer Yaşıyorsa Onu Takip Et */
else
{
/* 1- Sahibinin Origini 2- Köpeğin Origini 3- Sahip Origin 2( Uzaklik ) 4- Hedef Origin */
static Float: SahipOrigin[ 3 ], Float: KopekOrigin[ 3 ], Float: SahipOrigin2[ 3 ], Float: HedefOrigin[ 3 ];
/* Köpeğin Sahibine Olan Uzaklığı , Köpeğin Hedef Kontrolü İçin */
static Float: Uzaklik, Float: UzaklikHedef;
/* Köpeğin Originini Al */
entity_get_vector( iEnt, EV_VEC_origin, KopekOrigin );
/* Sahibinin Originini Al */
entity_get_vector( Sahip, EV_VEC_origin, SahipOrigin );
/* Köpeğin Sahibine Olan Uzaklığı Ölç */
Uzaklik = get_distance_f( KopekOrigin, SahipOrigin );
/* Eğer Kıskançlık Cvarım Açıksa Biri Sahibe Yaklaştığında Onu Hedef Seç */
if( get_pcvar_num( cvar_kopek_kiskanclik ) == 1 )
{
/* Oyuncu Kontrolü */
new oyuncular[ 32 ], onum;
get_players( oyuncular, onum, "ae", "TERRORIST" )
static i;
for( i = 0; i < onum; i++ )
{
/* Bütün Canlı Teröristler */
tempid = oyuncular[ i ];
/* Sahibinin Originini Al */
entity_get_vector( Sahip, EV_VEC_origin, SahipOrigin2 );
/* Bütün Canlı Teröristlerin Originini Al*/
entity_get_vector( tempid, EV_VEC_origin, HedefOrigin );
/* Hedefler İle Sahip Arasındaki Uzaklik */
UzaklikHedef = get_distance_f( SahipOrigin2, HedefOrigin );
/* Eğer Sahibe Yaklaşan Olursa Onu Hedef Seç */
if( UzaklikHedef <= 300.0 )
{
/* Köpeğin Sürekli Hedef Seçmesini Önlemek */
if( !KopekHedef || !is_user_alive( KopekHedef ) )
{
/* Hedefini Buldun */
yuru = true;
saldir = true;
doluyum = true;
KopekHedef = tempid;
entity_set_int( iEnt, EV_INT_movetype, MOVETYPE_PUSHSTEP );
Util_PlayAnimation( iEnt, KOPEK_KOS );
Hareket = KOPEK_SALDIR;
entity_set_float( iEnt, EV_FL_nextthink, get_gametime() + 0.1 );
}
}
}
}
/* Eğer Köpek Hedefini Öldürdüyse Tekrar Sahibini Bulsun */
if( !doluyum )
{
/* Sahibine Olan Uzaklığı Fazla İse Onu Takip Et */
if( Uzaklik > 100.0 )
{
Hareket = KOPEK_KOS;
zipladim = false;
yuru = true
dur = true;
entity_set_float( iEnt, EV_FL_nextthink, get_gametime() + 0.1 );
}
/* Değilse Bekle */
else
{
entity_set_float( iEnt, EV_FL_nextthink, get_gametime() + 0.1 );
return;
}
}
}
}
/* Koşma Hareketi */
case KOPEK_KOS:
{
/* 1- Sahibinin Origini 2- Köpeğin Origini 3- Sahip Origin 2( Uzaklik ) 4- Hedef Origin */
static Float: SahipOrigin[ 3 ], Float: KopekOrigin[ 3 ], Float: SahipOrigin2[ 3 ], Float: HedefOrigin[ 3 ];
/* 1-Vektör 2- Açı */
static Float: Vector[ 3 ], Float: Angle[ 3 ];
/* Sahipine Uzakliği, Hedefine Uzakliği */
static Float: Uzaklik, Float: UzaklikHedef;
/* Oyuncu Kontrolü */
static tempid;
/* Sahip Yaşamıyorsa Dur */
if ( !is_user_alive( Sahip ) || !Sahip )
{
Util_PlayAnimation( iEnt, KOPEK_DUR );
Hareket = KOPEK_DUR;
doluyum = false;
entity_set_float( iEnt, EV_FL_nextthink, get_gametime() + 1.5 );
return;
}
/* Koşma Hareketi */
if ( yuru )
{
entity_set_int( iEnt, EV_INT_movetype, MOVETYPE_PUSHSTEP );
Util_PlayAnimation( iEnt, KOPEK_KOS );
yuru = false;
}
/* Sahip Yaşıyorsa */
if( is_user_alive( Sahip ) )
{
entity_get_vector( iEnt, EV_VEC_origin, KopekOrigin );
entity_get_vector( Sahip, EV_VEC_origin, SahipOrigin );
Uzaklik = get_distance_f( KopekOrigin, SahipOrigin );
xs_vec_sub( SahipOrigin, KopekOrigin, Vector );
vector_to_angle( Vector, Angle );
/* Eğer Kıskançlık Cvarım Açıksa Biri Sahibe Yaklaştığında Onu Hedef Seç */
if( get_pcvar_num( cvar_kopek_kiskanclik ) == 1 )
{
new oyuncular[ 32 ], onum;
get_players( oyuncular, onum, "ae", "TERRORIST" )
static i;
for( i = 0; i < onum; i++ )
{
tempid = oyuncular[ i ];
entity_get_vector( Sahip, EV_VEC_origin, SahipOrigin2 );
entity_get_vector( tempid, EV_VEC_origin, HedefOrigin );
UzaklikHedef = get_distance_f( SahipOrigin2, HedefOrigin );
if( UzaklikHedef <= 300.0 )
{
if( !KopekHedef || !is_user_alive( KopekHedef ) )
{
saldir = true;
doluyum = true;
KopekHedef = tempid;
Hareket = KOPEK_SALDIR;
entity_set_float( iEnt, EV_FL_nextthink, get_gametime() + 0.1 );
}
}
}
}
}
if( !doluyum )
{
if( Uzaklik > 100.0 && ( !KopekHedef || !is_user_alive( KopekHedef ) ) )
{
if( zipladim )
{
if(pev( iEnt,pev_flags) & FL_ONGROUND)
{
static Float:velocity1[3];
entity_get_vector( iEnt, EV_VEC_velocity, velocity1 );
velocity1[ 2 ] += 600.0;
entity_set_vector( iEnt, EV_VEC_velocity, velocity1 );
zipladim = false;
}
}
else
{
static Float:num;
num = floatsqroot( float( 280 ) * float( 280 ) / ( Vector[ 0 ] * Vector[ 0 ] + Vector[ 1 ] * Vector[ 1 ] + Vector[ 2 ] * Vector[ 2 ] ) );
Vector[ 0 ] *= num;
Vector[ 1 ] *= num;
Vector[ 2 ] ? ( Vector[ 2 ] = 0.0 ) : ( Vector[ 2 ] *= num );
entity_set_vector( iEnt, EV_VEC_velocity, Vector );
Angle[ 0 ] = 0.0;
Angle[ 2 ] = 0.0;
entity_set_vector( iEnt, EV_VEC_angles, Angle );
}
entity_set_float( iEnt, EV_FL_nextthink, get_gametime() + 0.1 );
return;
}
else
{
dur = true;
Hareket = KOPEK_DUR;
entity_set_float( iEnt, EV_FL_nextthink, get_gametime() + 0.1 );
}
}
}
}
}
stock Util_PlayAnimation(index, sequence, Float: framerate = 1.0)
{
entity_set_float(index, EV_FL_animtime, get_gametime());
entity_set_float(index, EV_FL_framerate, framerate);
entity_set_float(index, EV_FL_frame, 0.0);
entity_set_int(index, EV_INT_sequence, sequence);
}
//Thx chr_engine...
stock get_offset_origin_body(ent,const Float:offset[3],Float:origin[3])
{
if(!pev_valid(ent))
return 0;
new Float:angle[3]
pev(ent,pev_angles,angle)
pev(ent,pev_origin,origin)
origin[0] += floatcos(angle[1],degrees) * offset[0]
origin[1] += floatsin(angle[1],degrees) * offset[0]
origin[1] += floatcos(angle[1],degrees) * offset[1]
origin[0] += floatsin(angle[1],degrees) * offset[1]
return 1;
}