-
Szóval elkezdtem egy Fun/Dm/Stunt szerót írni csak így gyakorlásból. Nah de nem is ez a lényeg hanem arról lenne szó, ha valaki vett egy fegyvert pl: egy dialogból és ha azután belép egy dm zónába ugye reseteli a fegyvereket és oda adja a \"dm zónához illő\" fegyvereket és azután amikor pedig kilép és hogy amiket megvett azokat visszakapja nem tudom, hogy ez lehetséges de ha igen, valaki leírja?? :D A másik meg, hogy ez alapján: https://sampforum.hu/index.php?topic=23934.0 (amit Gábor hsz.-ben írt oda) megcsináltam a dm zónát és ha nincs DM zónában akkor is betudja írni, hogy /exitdm és elrakja a random spawnra ezt valahogy meglehet oldani, hogy ne lehessen akkor beírni? Előre is köszi a segítségeket.
-
1. elmented a fegyvereit egy változóba amit nem nullázol, majd ha kilép akkor visszadod és nullázod a változót!
2. Ha bemegy a DMZónara akkor egy változó true értéket kap ha kijön false, és a parancsnál ha false nem történik semmi
-
A dm zóna kilépés így, hogy leírtad mit kell csinálni az most sikerült, azt is köszönöm szépen.
De mivel nem rég kezdtem scriptelni ezért ezt a fegyver vissza adós cuccost nem értem :\'( Ha esetleg bövebben tudnál/valaki tudna segíteni azt nagyon szépen megköszönném.
-
#define FILTERSCRIPT
#define function%0(%1) forward%0(%1);public%0(%1)
#include a_samp
new weapo[MAX_PLAYERS][12], ammo[MAX_PLAYERS][12];
function SaveWeapons(playerid) {
for(new i = 0; i < 12; i++) {
GetPlayerWeaponData(playerid, i+1, weapo[playerid], ammo[playerid]);
}
}
function LoadWeapons(playerid) {
for(new i = 0; i < 12; i++) {
GivePlayerWeapon(playerid, weapo[playerid], ammo[playerid]);
}
}
//LoadWeapons(playerid);
//SaveWeapons(playerid);
-
function SaveWeapons(playerid) {
for(new i = 0; i < 12; i++) {
GetPlayerWeaponData(playerid, i+1, weapo[playerid], ammo[playerid]);
}
}
Nem kötekedés képpen de:
i+1 miért nem 1ről indítod?:D (Így is jó csak csúsztatni kell)
-
warning 219: local variable \"ammo\" shadows a variable at a preceding level
Ez a warning fogadott, mi lehet a gond?
-
Az \"ammo\" nevű változó többször van létrehozva! Írd át \"FegyverAmmo\"-ra vagy valami másra, de ne felejtsd átírni a scriptben amit zιтяσиє írt.
-
Öhh köszi, mostmár tudni fogom, hogy ha ezt a warningot írja mi a hiba mert már találkoztam ilyennel. Szóval beraktam a módba a \"scriptjét\". Mit kell még csinálni, hogy vissza adja? Tényleg elnézést kérek, hogy ennyire nem értem ezt a részét. Elfogadom azt is, hogy akkor minek kezdtem bele a PAWN nyelvbe. De senkise szopta ki egyből a kisujjából.
-
Megkeresed azt a részt, ahol belépsz a DM-be és előtte beírod a SaveWeapons(playerid), majd mikor kilép a dmből reseteled a dm-es fegyvereit és a LoadWeapons(playerid), visszaadod;
(A script csak a 11-es fegyverig megy el, szóval ilyen m4 és hasonlókat nem fog vissza tölteni. [átkell írni a 47-ig]
-
Nem. Egy játékosnál (maximum) 13 darab fegyver lehet. A 12-es szám az a fegyverek (darabjának) száma. Nem kell átírnod semmit, az összes nálad lévő fegyvert elmenti a szkript. A használatát pedig már leírta Brian Harris. http://i.imgur.com/u4S6avk.png
-
Hát megvan minden én szerintem. Belépek dm zónába ki is lépek de aztán mikor görgetném hogy elővegyem az fogad, hogy ott fent a hudban odarakja egy mili secre a deaglet de el is tünik a kezébe is oda rakja de ott is eltünik. Szóval magyarul elpörög.
CMD:mgm(playerid, params[])
{
new rand = random(sizeof(RandomMiniSpawn));
SetPlayerPos(playerid, RandomMiniSpawn[rand][0], RandomMiniSpawn[rand][1],RandomMiniSpawn[rand][2]);
SaveWeapons(playerid);
ResetPlayerWeapons(playerid);
GivePlayerWeapon(playerid,38,1000000);
SetPlayerVirtualWorld(playerid,2);
SetPlayerHealth(playerid,100);
SetPlayerArmour(playerid,100);
SendClientMessage(playerid,0xbc0000,\"Minigun Dm zónába léptél!\");
dmzone[playerid] = true;
return 1;
}
CMD:exitdm(playerid, params[])
{
if(dmzone[playerid] == true)
{
dmzone[playerid] = false;
SetPlayerVirtualWorld(playerid, 0);
new rand = random(sizeof(RandomSpawn));
SetPlayerPos(playerid, RandomSpawn[rand][0], RandomSpawn[rand][1],RandomSpawn[rand][2]);
SendClientMessage(playerid,0xbc0000,\"Kiléptél a DM zónából!\");
ResetPlayerWeapons(playerid);
LoadWeapons(playerid);
}
else
{
SendClientMessage(playerid,COL_PIROS,\"ERROR: Nem vagy zónában\");
}
return 1;
}
Lehet, hogy én rontottam el?
-
akkor a módba van valami, lehet van egy változója, hozzá kell rendelni a LoadWeapons()-hoz a változót technikai okosság:
Így is jó:
CMD:exitdm(playerid, params[])
{
if(dmzone[playerid] == true)
{
dmzone[playerid] = false;
SetPlayerVirtualWorld(playerid, 0);
new rand = random(sizeof(RandomSpawn));
SetPlayerPos(playerid, RandomSpawn[rand][0], RandomSpawn[rand][1],RandomSpawn[rand][2]);
SendClientMessage(playerid,0xbc0000,\"Kiléptél a DM zónából!\");
ResetPlayerWeapons(playerid);
LoadWeapons(playerid);
}
else
{
SendClientMessage(playerid,COL_PIROS,\"ERROR: Nem vagy zónában\");
}
return 1;
}
De így esztétikailag szebb és nem annyira nehezen követhető:
CMD:exitdm(playerid, params[])
{
if(dmzone[playerid] == false)
return SendClientMessage(playerid,COL_PIROS,\"ERROR: Nem vagy zónában\");
dmzone[playerid] = false;
SetPlayerVirtualWorld(playerid, 0);
new rand = random(sizeof(RandomSpawn));
SetPlayerPos(playerid, RandomSpawn[rand][0], RandomSpawn[rand][1],RandomSpawn[rand][2]);
SendClientMessage(playerid,0xbc0000,\"Kiléptél a DM zónából!\");
ResetPlayerWeapons(playerid);
LoadWeapons(playerid);
return 1;
}
-
Az esetleg gondot okozhat neki, hogy mikor spawnol akkor kapja meg a weapont mivel OnPlayerRequestClassal csináltam vagy 10 skint és mindegyiknek adtam fegyvert, azzal lehet probléma?
Módósítás: Meg van a hiba. Az volt a hiba hogy több töltény volt mint amennyit kiírt a hud. Lentebb vettem annyira, hogy kiírja mennyi ammo van nála és így már egyből jó. Szerintem nem tudta lementeni mennyi ammo van nála. Köszönöm nektek, hogy segítetettek. Hálás vagyok.
-
Szerintem igen, mivel ha 13 fegyver lehet nálad bezavarhat.
-
Tényleg egy utolsó kérdés ebben a témában és bocsii, hogy zaklatlak titeket ilyen hülyeségekkel. Márcsak azt akarom, hogy dm zónában semmilyen parancsot se tudj írni, ha ezt megtudom, hogy kell akkor el is tünök. Megcsinálam az összes dm zónát meg a mappokat hozzá.
-
public OnPlayerCommandReceived(playerid, cmdtext[])
{
if(dmzone[playerid] == true)
return false;
return true;
}
-
Nagyon szépen köszönöm a segítségeteket. Ezer hálám.
Dupla hozzászólás automatikusan összefûzve. ( 2016. május 12. - 20:47:59 )
Öhhh még csak most teszteltem le. De már meg az a gond, hogy /exitdm-ezni sem tudok :D
-
public OnPlayerCommandReceived(playerid, cmdtext[])
{
if (!strcmp(cmdtext, \"/valami\", true))
{
// kód
}
if(dmzone[playerid] == true)
return false;
return true;
}
-
Azt szeretném kérdezni, hogy ha oda raktam a prancsot attól hagyjam ott ahol jelenleg van? Mert ha kiveszem akkor jól műkődik csak azt írja: Server: Unknown Command, ha ott hagyom akkor pedig 2x írja ki, hogy ERROR: nem vagy dm zónában. Minden variációt kiprobáltam de ha innen veszem ki, ott hagyom ott akkor bugos ha fordítva akkor is.