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

Forward przesyłanie float referencyjnie


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

#1 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 03.12.2011 22:51

chce przesłać liczbę zmiennoprzecinkową w forwardzie poprzez referencje

obecny kod
new gFW,iRet;
	
	gFW = CreateMultiForward("diablo_damage_pre",ET_CONTINUE,FP_CELL,FP_CELL,FP_ARRAY,FP_CELL);
	
	new Float:fArray[1];
	
	fArray[0] = fDamage; 
	
	new iPrep = PrepareArray(_:fArray,1,1)
	
	ExecuteForward(gFW,iRet,this,idattacker,iPrep,damagebits);


inc
forward diablo_damage_pre(iVictim,iAttacker,Float:fDamage,damageBits);

obsluga
public diablo_damage_pre(iVictim,iAttacker,Float:fDamage,damageBits){
	if(bKlasa[iAttacker]){
		fDamage -= 10.0;
		diablo_add_hp(iAttacker,1);
	}
}

  • +
  • -
  • 0

#2 Owner123

    Wszechpomocny

  • Użytkownik

Reputacja: 146
Zaawansowany

  • Postów:331
  • Lokalizacja:Barty ;]
Offline

Napisano 03.12.2011 23:55


new gFW,iRet;

gFW = CreateMultiForward("diablo_damage_pre",ET_CONTINUE,FP_CELL,FP_CELL,FP_CELL,FP_CELL);

ExecuteForward(gFW,iRet,this,idattacker,_:fDamage,damagebits);


forward i reszta zostaje jak jest :s
Jeśli chcesz dodać referencje to:
forward diablo_damage_pre(iVictim,iAttacker,&Float:fDamage,damageBits);

Ale ręki sobie uciąć nie dam ...

Użytkownik Owner123 edytował ten post 03.12.2011 23:57

  • +
  • -
  • 0

#3 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 04.12.2011 18:53

niestety nie działa
to co chciałbym zrobić mógłbym zrobić za pomocą callfunc_* jednak to tylko dla jednego pluginu
  • +
  • -
  • 0

#4 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 04.12.2011 19:00

jak by kogoś interesowało rozwiązanie dla jednego pluginu
new pFunc = get_func_id("diablo_damage_class",ArrayGetCell(gClassPlugins,playerInf[this][currentClass]));
		
		if(pFunc != -1){
			callfunc_begin_i(pFunc,ArrayGetCell(gClassPlugins,playerInf[this][currentClass]));
			callfunc_push_int(this);
			callfunc_push_int(idattacker);
			callfunc_push_floatrf(fDamage);
			callfunc_push_int(damagebits);
			callfunc_end();
		}

  • +
  • -
  • 0

#5 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 23.05.2012 22:18

Sory, że odkopię, ale skoro wysyłamy w forwardzie coś jako tablicę, to trzeba ją przekazywać jako tablicę, a przynajmniej robiąc to w taki sposób nie ma żadnych problemów z przesłaniem floata w forwardzie.
Czyli robimy tak
new gFW,iRet;

gFW = CreateMultiForward("diablo_damage_pre",ET_CONTINUE,FP_CELL,FP_CELL,FP_ARRAY,FP_CELL);

new Float:fArray[1];

fArray[0] = fDamage;

ExecuteForward(gFW,iRet,this,idattacker,PrepareArray(_:fArray,1,1),damagebits);

inc
forward diablo_damage_pre(iVictim,iAttacker,Float:fDamage[],damageBits);

obsługa
public diablo_damage_pre(iVictim,iAttacker,Float:fDamage[],damageBits){
if(bKlasa[iAttacker]){
fDamage[0] -= 10.0;
diablo_add_hp(iAttacker,1);
}
}

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#6 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 28.05.2012 13:53

Przepraszam, ale jak chcesz tworzyć coś jako referencję w multi forwardzie? Przecież ten forward zostanie wywołany w wielu pluginach. To jest dokładnie tak samo, jak z return w tych forwardach, nie zbierzesz przecież wartości w ten sposób od wszystkich pluginów. No chyba, że chcesz, aby pluginy przekazywały między sobą zmienioną wartość...

Użytkownik GwynBleidD edytował ten post 28.05.2012 13:57

  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark





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

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