Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.

  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Boty na SoccerJamJak zaprogramować boty


  • Zamknięty Temat jest zamknięty
2 odpowiedzi w tym temacie

#1 kociak

    Nowy

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:6
  • Lokalizacja:Daleko
Offline

Napisano 05.07.2010 18:42

Mam taki mały problem. Przeczytałem temat Miczu o Botach na serwery z modem SoccerJam. Chciałbym je wgrać na serwa jednak że nie umiem zaprogramować ich bo się na tym nie znam. Prosił bym o pomoc aby ktoś kto się na tym zna zaprogramował mi te boty tak aby jeden był w tt i ct i stały one na bramce. Proszę o pomoc.

Oto wgląd do sma napisanego przez Miczu

#include <amxmodx>
#include <amxmisc>
#include <engine>

#define PLUGIN "need_a_bot"
#define VERSION "0.1"
#define AUTHOR "Miczu"

new Float: g_mins[3]={-16.0,-16.0,-36.0}
new Float: g_maxs[3]={ 16.0, 16.0, 36.0}
new Float: g_sixe[3]={ 32.0, 32.0, 72.0}

new KNIFE_VIEW[] = "models/v_knife.mdl"
new KNIFE_PLAYER[] = "models/p_knife.mdl"

new aball

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

register_clcmd("need_a_bot","ball_krepper")

register_think("krepper","krepper_think")
register_touch("krepper", "PwnBall", "touch_ball")
register_touch("krepper", "krepper", "touch_krepper")
register_touch("krepper", "player", "touch_player")
}

public plugin_precache()
{
precache_model("models/player/vip/vip.mdl")

precache_model(KNIFE_VIEW)
precache_model(KNIFE_PLAYER)
}

public ball_krepper(id)
{
new Float: ori[3]
new ent = create_entity("info_target")
entity_set_string(ent, EV_SZ_classname,"krepper")

entity_set_model(ent, "models/player/vip/vip.mdl")

entity_set_vector(ent, EV_VEC_mins, g_mins)
entity_set_vector(ent, EV_VEC_maxs, g_maxs)
entity_set_vector(ent, EV_VEC_size, g_sixe)

entity_get_vector(id,EV_VEC_origin,ori)
ori[0]+=80.0
ori[1]+=80.0
ori[2]+=100.0

entity_set_origin(ent,ori)

entity_set_float(ent, EV_FL_health,1.0)
entity_set_float(ent, EV_FL_takedamage, 1.0)
entity_set_float(ent, EV_FL_dmg_take, 1.0)
entity_set_float(ent, EV_FL_framerate, 1.0)

entity_set_int(ent, EV_INT_movetype, 13)
entity_set_int(ent, EV_INT_solid, 2)
entity_set_int(ent, EV_INT_spawnflags, 0)
entity_set_int(ent, EV_INT_sequence, 1) //75
entity_set_int(ent, EV_INT_gaitsequence,4)
entity_set_int(ent, EV_INT_weaponanim,3)

entity_set_string(ent, EV_SZ_viewmodel,KNIFE_VIEW)
entity_set_string(ent, EV_SZ_weaponmodel,KNIFE_PLAYER)

new entWeapon = create_entity("info_target")
entity_set_string(entWeapon, EV_SZ_classname, "CSW_M4A1")
//set to follow
entity_set_int(entWeapon, EV_INT_movetype, MOVETYPE_FOLLOW)
entity_set_int(entWeapon, EV_INT_solid, SOLID_NOT)
entity_set_edict(entWeapon, EV_ENT_aiment, ent)
entity_set_model(entWeapon, KNIFE_PLAYER)

entity_set_float(ent,EV_FL_nextthink,halflife_time() + 2.0)

}

public krepper_think(ent)
{
new Float: bolli[3],Float: Enti[3]
new Float: ball_vec[3]
new Float: dir[3]
new Float: angle[3]
new Float: lol[3]
new Float: vector[3]
new Float: k_speed

aball = find_ent_by_class(-1,"PwnBall")
new solid = entity_get_int(aball,EV_INT_solid)
if(aball==0)
{
entity_set_int(ent, EV_INT_gaitsequence,1)
entity_set_float(ent,EV_FL_nextthink,halflife_time() + 1.00)
return
}

entity_get_vector(ent,EV_VEC_velocity,vector)
entity_get_vector(aball,EV_VEC_velocity,ball_vec)
entity_get_vector(aball,EV_VEC_origin,bolli)
entity_get_vector(ent,EV_VEC_origin,Enti)

k_speed = vector_length(vector)
if(k_speed<50)
{
entity_set_int(ent, EV_INT_sequence,1)
}
else if(k_speed<200)
{
entity_set_int(ent, EV_INT_sequence,4)
entity_set_float(ent,EV_FL_framerate,0.5)
}
else
{
entity_set_int(ent, EV_INT_sequence,4)
entity_set_float(ent,EV_FL_framerate,1.0)
}

for(new i=0;i<3;i++)
{
dir[i]=bolli[i]-Enti[i]
}

vector_to_angle(dir,angle)

lol[0]=0.0
lol[1]=angle[1]
lol[2]=0.0

entity_set_vector(ent,EV_VEC_angles,angle)
entity_set_vector(ent,EV_VEC_v_angle,lol)

new flags = entity_get_int(ent,EV_INT_flags)

if(flags & (1<<9)) bot_move_think(ent)
else //umoziwia wskok na trybuny
{
entity_get_vector(ent,EV_VEC_velocity,vector)

if(bolli[0]>Enti[0]) vector[0]+=1.0
else vector[0]-=1.0
if(bolli[1]>Enti[1]) vector[1]+=1.0
else vector[1]-=1.0

vector[2]-=13.0
entity_set_vector(ent,EV_VEC_velocity,vector)
}

entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.05)
}

public touch_krepper(ent,ent2)
{
new Float: bolli[3],Float: Enti[3]
entity_get_vector(ent2,EV_VEC_origin,bolli)
entity_get_vector(ent,EV_VEC_origin,Enti)

new Float: dir[3]
for(new i=0;i<3;i++)
{
dir[i]=bolli[i]-Enti[i]
}

new Float: lol[3]
lol[0]=dir[0]*17.0
lol[1]=dir[1]*17.0
lol[2]=250.0

entity_set_vector(ent2,EV_VEC_basevelocity,lol)
}

public touch_player(ent,id)
{
new Float: bolli[3],Float: Enti[3]
entity_get_vector(id,EV_VEC_origin,bolli)
entity_get_vector(ent,EV_VEC_origin,Enti)

new Float: dir[3]
for(new i=0;i<3;i++)
{
dir[i]=bolli[i]-Enti[i]
}

new Float: lol[3]
lol[0]=dir[0]*10.0
lol[1]=dir[1]*10.0
lol[2]=50.0

entity_set_vector(id,EV_VEC_basevelocity,lol)
}

public bot_jump(ent)
{
new Float: vector[3]
entity_get_vector(ent,EV_VEC_velocity,vector)
vector[2]+=375.0
entity_set_vector(ent,EV_VEC_velocity,vector)
}


/////////////////////////////////////////////////////////////////////////
////// Ponizej tego proszę zrobic mozg bota /////////
/////////////////////////////////////////////////////////////////////////

public touch_ball(ent,ball)
{
new Float: bolli[3],Float: Enti[3],Float: vol[3]
entity_get_vector(ball,EV_VEC_origin,bolli)
entity_get_vector(ent,EV_VEC_origin,Enti)

new Float: dir[3]
for(new i=0;i<3;i++)
{
dir[i]=bolli[i]-Enti[i]
}

new Float: lol[3]
lol[0]=dir[0]*20.0
lol[1]=dir[1]*20.0
lol[2]+=350.0

entity_get_vector(ball,EV_VEC_velocity,vol)
new Float: speed = vector_length(vol)

if(speed<1200) entity_set_vector(ball,EV_VEC_basevelocity,lol)

lol[0]=dir[0]*-15.0
lol[1]=dir[1]*-15.0
lol[2]=0.0

entity_set_vector(ent,EV_VEC_basevelocity,lol)
}

public bot_move_think(ent)
{
new Float: o_ent[3],Float: o_ball[3],Float: dir[3],Float: dir2[3]
new Float: speed

entity_get_vector(ent,EV_VEC_origin,o_ent)
entity_get_vector(aball,EV_VEC_origin,o_ball)

for(new i=0;i<3;i++)
{
dir[i]=o_ball[i]-o_ent[i]
}

speed = vector_length(dir)

for(new i=0;i<3;i++)
{
dir2[i]=dir[i]/speed //tak o to dir2 jako jednostowy wektor kierunku
}

//////////////////////////////////////////////

new Float: volecity[3]
entity_get_vector(ent,EV_VEC_velocity,volecity)
speed = vector_length(volecity)
if(speed<100)
{
for(new i=0;i<2;i++) volecity[i]+= dir2[i]*45.0
entity_set_vector(ent,EV_VEC_velocity,volecity)
}
else if(speed<250)
{
for(new i=0;i<2;i++) volecity[i]+= dir2[i]*65.0
entity_set_vector(ent,EV_VEC_velocity,volecity)
}
else if(speed<333)
{
for(new i=0;i<2;i++) volecity[i]+= dir2[i]*90.0
entity_set_vector(ent,EV_VEC_velocity,volecity)
}

if(random_num(0,256)==66) bot_jump(ent)
static jumpi=0

if(speed<50) jumpi++

if(jumpi>7)
{
jumpi=0
bot_jump(ent)
}
}


  • +
  • -
  • 0
Dołączona grafika
To jeden z wielu naszych serwerów.
Masz jakieś sugestie związane z serwerem ? Zaprezentuj nam je na naszym forum.

www.Cs-Dreams.pl

#2 Knopers

    Nie patrz tak na mnie !

  • Przyjaciel

Reputacja: 587
Wszechwiedzący

  • Postów:2013
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Cz-wa
Offline

Napisano 05.07.2010 20:01

Z tego co się orientuje to sam Miczu nie zrobił tych botów tak jak sobie planował (na bramkarzy) z tego co pamiętam za czasów kiedy Miczu grał w SJ nauczył boty podawać prawie idealnie .
Sądzę iż Miczu nie ma teraz za bardzo czasu bo pracuje nad Diablo 6.0 , chyba za dużo "jebania się" z tym aby ktoś to tak przerobił .
  • +
  • -
  • 0

#3 kociak

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:6
  • Lokalizacja:Daleko
Offline

Napisano 05.07.2010 20:56

Bo chciałem je wgrać na swojego serwa, bo na razie go rozkręcam a fajnie by było jakby był cały czas bramkarz bo nie zawsze jest tylu graczy zeby sobie fajnie pograć ;]


@edit

o zauważyłem że z Czewy ;] ja między czewą a Olesnem ;D

Użytkownik kociak edytował ten post 05.07.2010 20:59

  • +
  • -
  • 0
Dołączona grafika
To jeden z wielu naszych serwerów.
Masz jakieś sugestie związane z serwerem ? Zaprezentuj nam je na naszym forum.

www.Cs-Dreams.pl




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych