Szerző Téma: Fegyver visszaadás  (Megtekintve 1687 alkalommal)

Fegyver visszaadás
« Dátum: 2016. május 12. - 16:57:09 »
0 Show voters
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.
« Utoljára szerkesztve: 2016. május 12. - 16:58:55 írta immortal1876 »

Fegyver visszaadás
« Válasz #1 Dátum: 2016. május 12. - 17:13:02 »
+1 Show voters
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

Fegyver visszaadás
« Válasz #2 Dátum: 2016. május 12. - 17:37:03 »
0 Show voters
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.

ᗩωєѕσмє

  • Vendég
Fegyver visszaadás
« Válasz #3 Dátum: 2016. május 12. - 18:21:34 »
+1 Show voters

#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);

Fegyver visszaadás
« Válasz #4 Dátum: 2016. május 12. - 18:25:05 »
0 Show voters
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)

Fegyver visszaadás
« Válasz #5 Dátum: 2016. május 12. - 18:29:46 »
0 Show voters

warning 219: local variable \"ammo\" shadows a variable at a preceding level

 
Ez a warning fogadott, mi lehet a gond?

Fegyver visszaadás
« Válasz #6 Dátum: 2016. május 12. - 18:32:31 »
0 Show voters
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.

Fegyver visszaadás
« Válasz #7 Dátum: 2016. május 12. - 18:37:21 »
0 Show voters
Ö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.

Fegyver visszaadás
« Válasz #8 Dátum: 2016. május 12. - 18:42:21 »
0 Show voters
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]

ᗩωєѕσмє

  • Vendég
Fegyver visszaadás
« Válasz #9 Dátum: 2016. május 12. - 18:52:07 »
0 Show voters
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

Fegyver visszaadás
« Válasz #10 Dátum: 2016. május 12. - 18:57:30 »
0 Show voters
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?
« Utoljára szerkesztve: 2016. május 12. - 19:01:09 írta immortal1876 »

Fegyver visszaadás
« Válasz #11 Dátum: 2016. május 12. - 19:05:33 »
0 Show voters
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;
}

Fegyver visszaadás
« Válasz #12 Dátum: 2016. május 12. - 19:08:09 »
0 Show voters
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.
« Utoljára szerkesztve: 2016. május 12. - 19:13:14 írta immortal1876 »

Fegyver visszaadás
« Válasz #13 Dátum: 2016. május 12. - 19:10:33 »
0 Show voters
Szerintem igen, mivel ha 13 fegyver lehet nálad bezavarhat.

Fegyver visszaadás
« Válasz #14 Dátum: 2016. május 12. - 19:17:41 »
0 Show voters
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á.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal