stock GiveWeapon(playerid, ammo, ...){new x = 0;for(; x < numargs()-2; x++){GivePlayerWeapon(playerid, getarg(x+2), ammo);}}
GiveWeapon(playerid, 100, 24, 31, 38);
stock GiveWeapon(playerid, ...){new x = 1;for(; x != ((numargs()-1)/2)+1; x++){ GivePlayerWeapon(playerid, getarg((x+x)-1), getarg(x+x));}}
GiveWeapon(playerid, 31, 250, 24, 50, 41, 1000);
A numargs() az összes argumentum számával tér vissza.stock GiveWeapon(playerid, ammo, ...)A playerid az elsõ arg.. az ammo a második és után tetszõlegesen meghatározott egész számok vagy int típusú változók.Ezért a for ciklust 2-essel kell kezdened, mivel kettõ argument már biztosan szerepel az eljárásban.new x = 2;
[22:27:42] ammo: 1000[22:27:42] weapons: 97[22:27:42] ammo: 1000[22:27:42] weapons: 0[22:27:42] ammo: 1000[22:27:42] weapons: 32[22:27:42] ammo: 1000[22:27:42] weapons: 54[22:27:42] ammo: 1000[22:27:42] weapons: 643[22:27:42] ammo: 1000[22:27:42] weapons: 75[22:27:42] ammo: 1000[22:27:42] weapons: 643
#include <a_samp>public OnFilterScriptInit(){GiveWeapon(0, 1000, 32, 54, 643, 75, 643);return 1;}public OnFilterScriptExit(){return 1;}stock GiveWeapon(playerid, ammo, ...){new x = 0;for(; x < numargs(); x++){//GivePlayerWeapon(playerid, getarg(x), ammo);printf(\"ammo: %d\", ammo);printf(\"weapons: %d\", getarg(x));}}
[22:32:28] ammo: 1000[22:32:28] weapons: 32[22:32:28] ammo: 1000[22:32:28] weapons: 54[22:32:28] ammo: 1000[22:32:28] weapons: 643[22:32:28] ammo: 1000[22:32:28] weapons: 75[22:32:28] ammo: 1000[22:32:28] weapons: 643
stock GiveWeapon(playerid, ...){new x = 0;for(; x < numargs(); x++){ GivePlayerWeapon(playerid, getarg(x), getarg(x+1));}}
[09:59:50] weapons: 45[09:59:50] ammo: 32[09:59:50] weapons: 32[09:59:50] ammo: 1000[09:59:50] weapons: 1000[09:59:50] ammo: 54[09:59:50] weapons: 54[09:59:50] ammo: 1000[09:59:50] weapons: 1000[09:59:50] ammo: 4323[09:59:50] weapons: 4323[09:59:50] ammo: 1000[09:59:50] weapons: 1000[09:59:50] ammo: 45
[09:57:38] weapons: 32[09:57:38] ammo: 1000[09:57:38] weapons: 54[09:57:38] ammo: 1000[09:57:38] weapons: 4323[09:57:38] ammo: 1000
A numargs() az összes argumentum számával tér vissza.stock GiveWeapon(playerid, ammo, ...)A playerid az elsõ arg.. az ammo a második és után tetszõlegesen meghatározott egész számok vagy int típusú változók.Ezért a for ciklust 2-essel kell kezdened, mivel kettõ argument már biztosan szerepel az eljárásban.new x = 2; Én úgy tudom hogy a numargs() az csak a ... -al jelölt rész argumentumait számolja. Nekem egyébként mûködik ahogy írtam, teszteltem, minden rendesen megy.[/quote]Rosszul tudod.Mûködni azért mûködik mert ha nem megfelelõ adatot kap a GivePlayerWeapon funkció akkor nem ad fegyvert.De ha a playerid értéked lenne annyi ami érvényes weapon id, akkor meglepetésként lenne olyan fegyver is amire nem számítottál. Edit:Írtam egy változatot.[pawn]stock GiveWeapon(playerid, ...){new x = numargs() - 1;for(new i = 1; i < x; i++, i++){ GivePlayerWeapon(playerid, getarg(i), getarg(i+1));}}[/pawn]És az se probléma ha valaki eltéveszti a weaponid ammo párosítást mivel nem fut tovább a ciklus ha nincs ammo érték is megadva.Használata:GiveWeapon(playerid, weaponid, ammo, weaponid, ammo);Természetesen tetszõlegesen több fegyver id-t és lõszer mennyiséget is meg lehet adni.GiveWeapon(playerid, weaponid, ammo, weaponid, ammo, weaponid, ammo, weaponid, ammo, weaponid, ammo);