Jump to content

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

Posted Image Posted Image

Guest Message by DevFuse
 

Photo

Forward przesyłanie float referencyjnie


  • You cannot start a new topic
  • Please log in to reply
5 replies to this topic

#1 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6,559
Godlike

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

Posted 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

Posted 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 ...

Edited by Owner123, 03.12.2011 23:57.

  • +
  • -
  • 0

#3 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6,559
Godlike

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

Posted 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,559
Godlike

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

Posted 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

Posted 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

Posted 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ść...

Edited by GwynBleidD, 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





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users