Skocz do zawartości

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
CoD Nowy

Teleportowanie gracza

cod nowy

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
5 odpowiedzi w tym temacie

#1 I3ombel

    Życzliwy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:29
  • Imię:Rafał
Offline

Napisano 11.02.2016 20:09

Witam.

Posiadam perk, który nas teleportuje.

/* Plugin generated by AMXX-Studio */


#include <amxmisc>
#include <codmod>
#include <engine>
#include <fakemeta>
#include <xs>


#define CS_PLAYER_HEIGHT 72.0


new const perk_name[] = "Magiczny Noz";
new const perk_desc[] = "Twoj noz pozwala ci teleportowac sie raz na 3 sekundy";


new bool:ma_perk[33];
new player_b_blink[33];


public plugin_init()
{
register_plugin(perk_name, "1.0", "I3ombel");


cod_register_perk(perk_name, perk_desc)


register_event("ResetHUD", "ResetHUD", "abe");
}


public cod_perk_enabled(id)
{
ma_perk[id] = true;
player_b_blink[id] = floatround(halflife_time())
}


public cod_perk_disabled(id)
{
ma_perk[id] = false;
}


public client_PreThink(id) 
{
if(!is_user_alive(id))
{
return PLUGIN_CONTINUE;
}
if( get_user_button(id) & IN_ATTACK2 && !(get_user_oldbutton(id) & IN_ATTACK2) && ma_perk[id]) 
{ 
if (get_user_weapon(id) == CSW_KNIFE)
{
if (halflife_time()-player_b_blink[id] <= 6.0) return PLUGIN_HANDLED 
player_b_blink[id] = floatround(halflife_time()) 
UTIL_Teleport(id,300+1800) 
}
}
return PLUGIN_CONTINUE;
}


public UTIL_Teleport(id,distance)
{ 
Set_Origin_Forward(id,distance)


new origin[3]
get_user_origin(id,origin)


message_begin(MSG_BROADCAST ,SVC_TEMPENTITY) 
write_byte(TE_PARTICLEBURST )
write_coord(origin[0])
write_coord(origin[1]) 
write_coord(origin[2]) 
write_short(20) 
write_byte(1)
write_byte(4) 
message_end()
}


stock Set_Origin_Forward(id, distance) 
{
new Float:origin[3]
new Float:angles[3]
new Float:teleport[3]
new Float:heightplus = 10.0
new Float:playerheight = 64.0
new bool:recalculate = false
new bool:foundheight = false
pev(id,pev_origin,origin)
pev(id,pev_angles,angles)


teleport[0] = origin[0] + distance * floatcos(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
teleport[1] = origin[1] + distance * floatsin(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
teleport[2] = origin[2]+heightplus


while (!Can_Trace_Line_Origin(origin,teleport) || Is_Point_Stuck(teleport,48.0))
{ 
if (distance < 10)
break;


for (new i=1; i < playerheight+20.0; i++)
{
teleport[2]+=i
if (Can_Trace_Line_Origin(origin,teleport) && !Is_Point_Stuck(teleport,48.0))
{
foundheight = true
heightplus += i
break
}


teleport[2]-=i
}


if (foundheight)
break


recalculate = true
distance-=10
teleport[0] = origin[0] + (distance+32) * floatcos(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
teleport[1] = origin[1] + (distance+32) * floatsin(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
teleport[2] = origin[2]+heightplus
}


if (!recalculate)
{
set_pev(id,pev_origin,teleport)
return PLUGIN_CONTINUE
}


teleport[0] = origin[0] + distance * floatcos(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
teleport[1] = origin[1] + distance * floatsin(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
teleport[2] = origin[2]+heightplus
set_pev(id,pev_origin,teleport)


return PLUGIN_CONTINUE
}


stock bool:Can_Trace_Line_Origin(Float:origin1[3], Float:origin2[3])
{ 
new Float:Origin_Return[3] 
new Float:temp1[3]
new Float:temp2[3]


temp1[0] = origin1[0]
temp1[1] = origin1[1]
temp1[2] = origin1[2]-30


temp2[0] = origin2[0]
temp2[1] = origin2[1]
temp2[2] = origin2[2]-30


trace_line(-1, temp1, temp2, Origin_Return) 


if (get_distance_f(Origin_Return,temp2) < 1.0)
return true


return false
}


stock bool:Is_Point_Stuck(Float:Origin[3], Float:hullsize)
{
new Float:temp[3]
new Float:iterator = hullsize/3


temp[2] = Origin[2]


for (new Float:i=Origin[0]-hullsize; i < Origin[0]+hullsize; i+=iterator)
{
for (new Float:j=Origin[1]-hullsize; j < Origin[1]+hullsize; j+=iterator)
{
for (new Float:k=Origin[2]-CS_PLAYER_HEIGHT; k < Origin[2]+CS_PLAYER_HEIGHT; k+=6) 
{
temp[0] = i
temp[1] = j
temp[2] = k


if (point_contents(temp) != -1)
return true
}
}
}


return false
}
Jak teraz ustawić odległość oraz czas co ile można się teleportować.
Dokładnie to tak chce ustawić:
  • 300m + (15 * Inteligencja)
  • 3 sek

 


Użytkownik I3ombel edytował ten post 11.02.2016 20:14

  • +
  • -
  • 0

#2 mayday245

    Najwiekszy krol c++

  • Zbanowany

Reputacja: 5
Nowy

  • Postów:292
  • Imię:Bartosz
  • Lokalizacja:Dzialdowo
Offline

Napisano 11.02.2016 20:32

Zrób cvary

Witam. Znam sie glownie na amxx, sourcemod, PHP, C++.   Masz zlecenie? Potrzebujesz czegos do szkoly? Pisz smialo kolego !

Ps. sygnature zmieniam, iz nijakiemu gówniarzowi zachcialo sie hejtowac :)

 


#3 I3ombel

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:29
  • Imię:Rafał
Offline

Napisano 11.02.2016 20:59

ale jak?


  • +
  • -
  • 0

#4 wonsz żeczny

    Wszechwidzący

  • Użytkownik

Reputacja: 82
Zaawansowany

  • Postów:254
  • Imię:Wonsz
  • Lokalizacja:Żeka
Offline

Napisano 11.02.2016 23:01

Zrób cvary

Haha :D

Może jeszcze bejcą ma walnąć?

 

Z odległościa nie wiem, bo nie umiem zmierzyć 300m xD

 

A co do czasu to:

 

na górze zmienna

new bool:moze[ 33 ]

w plugin_init dodaj

    set_task( 3.0, "CzasTeleportu", id )

a potem

public CzasTeleportu( id )
{
        if( moze[ id ] = false )
        {
	moze[ id ] = true
        }
}

To:

if (get_user_weapon(id) == CSW_KNIFE)

na

if (get_user_weapon(id) == CSW_KNIFE && moze[ id ])

potem za

UTIL_Teleport(id,300+1800) 

daj

moze[ id ] = false

jeszcze to

public cod_perk_enabled(id)
{
ma_perk[id] = true
player_b_blink[id] = floatround(halflife_time())
}

na

public cod_perk_enabled(id)
{
ma_perk[id] = true
moze[ id ] = true
player_b_blink[id] = floatround(halflife_time())
} 

Spróbuj tak jak coś pisz.


Użytkownik wonsz żeczny edytował ten post 11.02.2016 23:03

  • +
  • -
  • 1

#5 I3ombel

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:29
  • Imię:Rafał
Offline

Napisano 11.02.2016 23:05

Dzięki wielkie, jutro rano sprawdzę i dam znać :)
  • +
  • -
  • 0

#6 I3ombel

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:29
  • Imię:Rafał
Offline

Napisano 12.02.2016 20:29

Takie błędy podczas kompilacji się pokazały:

 

Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team


Error: Undefined symbol "id" on line 28
Error: Number of arguments does not match definition on line 28
Warning: Possibly unintended assignment on line 45


2 Errors.
Could not locate output file C:\Users\Nostale\Desktop\cod\perki\scripting\codperk_magicznynoz.amx (compile failed).

28 linia - set_task(3.0, "CzasTeleportu", id);

45 linia - if(moze[id] = false)

 


  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: cod nowy

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

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