←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Wywolanie funkcji knife dista...


Najlepsza odpowiedź GT Team 03.07.2013 12:10

zmienna globalna
new forward
w plugin init
forward = CreateMultiForward("twojplugin_traceline", ET_CONTINUE, FP_FLOAT, FP_FLOAT, FP_CELL, FP_CELL, FP_CELL)
w w trace line
public fwTraceline(Float:fStart[3], Float:fEnd[3], conditions, id, ptr)
{ 
        new ret; // wartosc zwracana
        ExecuteForward(forward, ret, fStart, fEnd, conditions, id, ptr)
	return vTrace(id, ptr,fStart,fEnd,conditions)
}
w inc biblioteki
forward twojplugin_traceline(Float:fStart[3], Float:fEnd[3], conditions, id, ptr)
w innym pluginie
#include 
i gdzies w pluginie
public twojplugin_traceline(Float:fStart[3], Float:fEnd[3], conditions, id, ptr)
{
    client_print(id, 3, "U cb traceline, origin poczatkowe %0.1f ...", fStart)
    // tutaj mozesz zmienic wartosci czy cos
    return PLUGIN_HALNDED // czyli tutaj dajemy wstrzymanie, wiec w tamtym wlasciwym pluginie, gdzie jest prawdziwy traceline ta funkcja zostanie zatrzmana tzn
   //ExecuteForward(forward, ret, fStart, fEnd, conditions, id, ptr)
   //return vTrace(id, ptr,fStart,fEnd,conditions) // to nie zostanie wykonane
Pisalem bez uzycia amxstudio wiec moglem cos zle zrobic. Poczytaj to: http://amxx.pl/topic/28693-forwardy/
edit, w innym pluginie < nazwa_pluginu > Przejdź do postu
Zablokowany

  • +
  • -
Kewin. (ZeZ) - zdjęcie Kewin. (ZeZ) 17.06.2013

Chcąc pobrać funkcję:,

w init:
register_forward(FM_TraceLine, "fwTraceline")
register_forward(FM_TraceHull, "fwTracehull", 1)

public fwTraceline(Float:fStart[3], Float:fEnd[3], conditions, id, ptr){
	return vTrace(id, ptr,fStart,fEnd,conditions)
}

public fwTracehull(Float:fStart[3], Float:fEnd[3], conditions, hull, id, ptr){
	return vTrace(id, ptr,fStart,fEnd,conditions,true,hull)
}

vTrace(id, ptr,Float:fStart[3],Float:fEnd[3],iNoMonsters,bool:hull = false,iHull = 0){
	if(is_user_alive(id) && get_user_weapon(id) == CSW_KNIFE){
		
		xs_vec_sub(fEnd,fStart,fEnd)
		xs_vec_mul_scalar(fEnd,get_pcvar_float(g_pCvar),fEnd);
		xs_vec_add(fEnd,fStart,fEnd);
		
		hull ? engfunc(EngFunc_TraceHull,fStart,fEnd,iNoMonsters,iHull,id,ptr) : engfunc(EngFunc_TraceLine,fStart,fEnd,iNoMonsters, id,ptr)
	}
	
	return FMRES_IGNORED;
}

aby było ją można czytać w innym publicu, nie wiem jak za to sie zabrac:/

Chciałbym, aby ją czytało przy na przykład dolaczaniu na serwer.

 

Myslalem o set_tasku?

set_task(0.1, "fwTraceline", id, _, _, "b");
set_task(0.1, "fwTracehull", id, _, _, "b");

Tylko, czy to w ogole zadziala...? I czy w ogole mozna tak to zrobic ?

Poradzilbym sobie chyba pewno sam, metoda prob i bledow, ale nie mam serwera.

 

Chetnie przyjme wszelkie wskazowki.

Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 17.06.2013

task to tak nie bardzo ;)

 

pytanie po co chesz wywołływać tą funkcje ? jaki efekt chcesz osiągnać

Odpowiedz

  • +
  • -
Kewin. (ZeZ) - zdjęcie Kewin. (ZeZ) 27.06.2013

chcialbym dodac to do statystyk codmod'a :)

Im wiecej punktow w statystyke to sie wydluza zasieg noza :)

Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 27.06.2013

więc 

 

 

Chciałbym, aby ją czytało przy na przykład dolaczaniu na serwer.

nie jest ci potrzebne

Odpowiedz

  • +
  • -
Kewin. (ZeZ) - zdjęcie Kewin. (ZeZ) 27.06.2013

Nie wiem co ja wtedy myslalem, piszac wtedy ten temat, ale chodzi mi właśnie, aby to dodać do statystyk diablo badz codmod'a.

Chcialem zrobic, to by czytalo do jednego publica, a potem z tego jednego publica by podczas wczytywaniu  ATRYBUTOW wczytywalo takze tego publica, ktory by zawieral tamte pare publicow :)

Bo innego sposobu nie wymyslilem, aby wsadzic caly ten kod co podalem w pierwsyzm poscie do ZastosujAtrybuty :)

 

A tak chyba by dzialalo, tylko wlasnie chcialbym wiedziec, jak zrobic, by ten caly kod umiescic w jendym publicu :)

 

Teraz chyba mnei rozumiesz?

Odpowiedz

  • +
  • -
Kewin. (ZeZ) - zdjęcie Kewin. (ZeZ) 02.07.2013

Wie ktoś jak scalić to?

Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 02.07.2013

Wyjaśnij co dokładnie chcesz zrobić. Wprowadzić podplugin łączący się z Codem lub diablo i dodający statystyki jakieś? Jeśli tak, co to za statystyki mają być? Opisz dokładnie, w zrozumiały sposób to.

Odpowiedz

  • +
  • -
Kewin. (ZeZ) - zdjęcie Kewin. (ZeZ) 03.07.2013

Chce zrobić statystyke powiedzmy do codmod'a nowego.

Aby przy dodawaniu punktow w ta statystyke powiekszal sie zasieg noza.

I wlasnie o to mi chodzi.

________

Ja myslalem, aby to zrobic w ten sposob, ze tam gdzie jest ZastosujAtrybuty(id); to pod tym dodaj powiedzmy Zamaszystosc(id); i aby z tego czytalo ta funkcje.

Ale wtedy by musiala byc w jednym publicu, a ona jest troche bardziej rozgaleziona.


Użytkownik Kewin. (ZeZ) edytował ten post 03.07.2013 09:50
Odpowiedz

GT Team - zdjęcie GT Team 03.07.2013

ExecuteForward ?
Odpowiedz

  • +
  • -
Kewin. (ZeZ) - zdjęcie Kewin. (ZeZ) 03.07.2013

Nie znam sie na tym.

Jak to by wygladalo?

 

 

 

 


Tak:??


public plugin_natives(){
	register_native("CreateOneForwardNative", "Zamaszystosc");
}
 
public Zamaszystosc(id){
	new function[32]
function = find_plugin_byfile("modifer_knife_distance.amxx");

	get_string(1, function, 31);
 
	forward_id=CreateOneForward(id, function, FP_CELL);
}

Czy:???

new ret;
	
	new forward_handle = CreateMultiForward("fwTraceline", ET_CONTINUE, FP_CELL, FP_CELL)
	ExecuteForward(forward_handle, ret, id, ?);
	
	new forward_handlee = CreateMultiForward("fwTracehull", ET_CONTINUE, FP_CELL, FP_CELL)
	ExecuteForward(forward_handlee, ret, id, ?);
	
	
}

Czy jak?

Odpowiedz

Najlepsza odpowiedź GT Team - zdjęcie GT Team 03.07.2013

zmienna globalna
new forward
w plugin init
forward = CreateMultiForward("twojplugin_traceline", ET_CONTINUE, FP_FLOAT, FP_FLOAT, FP_CELL, FP_CELL, FP_CELL)
w w trace line
public fwTraceline(Float:fStart[3], Float:fEnd[3], conditions, id, ptr)
{ 
        new ret; // wartosc zwracana
        ExecuteForward(forward, ret, fStart, fEnd, conditions, id, ptr)
	return vTrace(id, ptr,fStart,fEnd,conditions)
}
w inc biblioteki
forward twojplugin_traceline(Float:fStart[3], Float:fEnd[3], conditions, id, ptr)
w innym pluginie
#include 
i gdzies w pluginie
public twojplugin_traceline(Float:fStart[3], Float:fEnd[3], conditions, id, ptr)
{
    client_print(id, 3, "U cb traceline, origin poczatkowe %0.1f ...", fStart)
    // tutaj mozesz zmienic wartosci czy cos
    return PLUGIN_HALNDED // czyli tutaj dajemy wstrzymanie, wiec w tamtym wlasciwym pluginie, gdzie jest prawdziwy traceline ta funkcja zostanie zatrzmana tzn
   //ExecuteForward(forward, ret, fStart, fEnd, conditions, id, ptr)
   //return vTrace(id, ptr,fStart,fEnd,conditions) // to nie zostanie wykonane
Pisalem bez uzycia amxstudio wiec moglem cos zle zrobic. Poczytaj to: http://amxx.pl/topic/28693-forwardy/
edit, w innym pluginie < nazwa_pluginu >
Odpowiedz

  • +
  • -
Kewin. (ZeZ) - zdjęcie Kewin. (ZeZ) 03.07.2013

dzięki :)

Jesli bys mogltoprzeanalizuj to:

_____

Czyli plugin modifer'a bedzie wygladal tak:???

Spoiler

to jest include:


forward zamaszystosc(Float:fStart[3], Float:fEnd[3], conditions, id, ptr);
forward zamaszystosc2(Float:fStart[3], Float:fEnd[3], conditions, hull, id, ptr); 

A w pluginie codmod dodaje include nazwa_pliku oraz:

Spoiler

 

Jesli o to chodzi, to znow mam dwa publici :D

 

Odpowiedz

GT Team - zdjęcie GT Team 03.07.2013

błąd
g_forward = CreateMultiForward("zamaszystosc", ET_CONTINUE, FP_FLOAT, FP_FLOAT, FP_CELL, FP_CELL, FP_CELL)
	g_forward2 = CreateMultiForward("zamaszystosc2", ET_CONTINUE, FP_FLOAT, FP_FLOAT, FP_CELL, FP_CELL, FP_CELL, FP_CELL)
w g_forward2 masz 4 FP_CELL a w trace line masz tylko 3 wartości całkowite, tzn żebyś usunał 1 FP_CELL
fwTraceline(Float:fStart[3] FLOAT, Float:fEnd[3] FLOAT , conditions CELL, id CELL, ptr CELL)
FP_CELL - całkowite
FP_FLOAT - float
FP_STRING - string
i cos tam jeszcze ;d
A tak to ogolnie dobrze, i w tym pluginie codmod w tych publicach mozesz integrowac do traceline.
Odpowiedz

  • +
  • -
Kewin. (ZeZ) - zdjęcie Kewin. (ZeZ) 04.07.2013

Dalem 4, bo jest TraceLine i TraceHull.

TraceLine ma mniej wartosci a TraceHul ma wiecej.

Odpowiedz

GT Team - zdjęcie GT Team 04.07.2013

ahaa ;P nie zwróciłem uwagi, czekam na info czy działa.
Odpowiedz

  • +
  • -
Kewin. (ZeZ) - zdjęcie Kewin. (ZeZ) 04.07.2013

Na razie mozna zamknac, bo nie mam serwera.

Ja teraz po prostu szukam i robie wszytskie rzeczy na serwer, ktory wkrotce postawie :)

 

Jak postawie i sprawdze, to dam Ci znac ;)

dzięki.


Użytkownik Kewin. (ZeZ) edytował ten post 04.07.2013 19:59
Odpowiedz
Zablokowany