Szerző Téma: Parancs  (Megtekintve 894 alkalommal)

Nem elérhető Stramm

  • 193
    • Profil megtekintése
Parancs
« Dátum: 2013. február 25. - 17:18:53 »
0 Show voters
Sziasztok abban kérném segitségetek hogy Hogyan lehet megoldani azt hogy bizonyos helyeken ne használhassanak parancsokat PL:Épületben
Valaki leirná részletesen Köszi.
PL: /speed ne lehessen Dm-ben használni

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Parancs
« Válasz #1 Dátum: 2013. február 25. - 17:32:04 »
0 Show voters
if(!strcmp(cmdtext,\"/speed\",true))
{
if(dm[playerid] == 1) { return SendClientMessage(playerid,0xFF6600FF,\"Itt nem tudod használni ezt a parancsot !\"); }
// kód
return 1;
}
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Nem elérhető Cappsy

  • Adminisztrátor
  • 2754
    • Profil megtekintése
Parancs
« Válasz #2 Dátum: 2013. február 25. - 17:37:29 »
0 Show voters
OFF:
És megelõzött
ON:
Ne felejsd el definiálni a
dm

 

new dm[MAX_PLAYERS];

 
Valamint azt se felejsd el hogy amikor a dmbe áll akkor  legyen a dm = 1
 

    public OnPlayerConnect(playerid)
    {
        dm[playerid] = 0;
        return 1;
    }
    public OnPlayerDisconnect(playerid, reason)
    {
    dm[playerid] = 0;
    return 1;
    }
    if(!strcmp(cmdtext,\"/dmbe\",true))
    {
           dm[playerid] = 1;
            return 1;
    }
    if(!strcmp(cmdtext,\"/dmki\",true))
    {
           dm[playerid] = 0;
            return 1;
    }

Nem elérhető Stramm

  • 193
    • Profil megtekintése
Parancs
« Válasz #3 Dátum: 2013. február 25. - 17:39:13 »
0 Show voters
Úgy értettem megyarázattal mi mire jó

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Parancs
« Válasz #4 Dátum: 2013. február 25. - 18:05:51 »
+1 Show voters
3 megoldás ajánlott:
az egyikek leírta cappsy amikor eltárolod 1 változóban hogy bent van a dm-ben...de ezt kifejtem bõvebben és magyarázom is mindjárt...de kezdjük a másik kettõvel mert azok rövidebbek :D


1. megoldás:
http://wiki.sa-mp.com/wiki/GetPlayerInterior
 
if(GetPlayerInterior(playerid) != 0) { return 1; }

 
HA a játékos interiorja NEM 0 akkor nem fut le az alatta levõ kód !
Ennél csak annyi a gond hogy pl van a bank interior ami 0-s int-en van és ott már tudja használni...


2. megoldás:
http://wiki.sa-mp.com/wiki/IsPlayerInRangeOfPoint
Ez arra jó ha bizonyos távolságnál messzebb van a játékos egy megadott ponttól akkor hamis értékkel tér vissza...
 
if(!IsPlayerInRangeOfPoint(playerid,100.0,X,Y,Z) { return 1; }

 
HA a játékos X Y Z pozíciótól 100 méternél messzebb van nem tudja használni a parancsot ! Ez zónához kötött parancs ha kiveszed a !-et akkor fordított szóval a zónában nem tudja majd használni...


3. megoldás V1:
Egy változóban eltárolod hogy a játékos bent van e a DM zónában:
Tömb amiben tárolod a játékosok adatait:
 
new bool:dm[MAX_PLAYERS];

 
DM-be csatlakozásnál / DM elhagyásnál érték változtatás:
 
dm[playerid] = true;

 

dm[playerid] = false;

 
Amikor fellép/lelép törlöd a játékos adatot ! ( elég 1x törölni ! )
 
dm[playerid] = false;

 
Ellenõrzés, hogy a zónában van e, ha nincs a zónában ne fusson tovább a parancs:
 
if(!dm[playerid]) { return 1; }

 
Ez 1 zónára vonatkozik ha több zónád van akkor nem ajánlott több változót használni mert az kicsit megdobná a forráskód méretét és minden feltétel ellenõrzésnél többször kell ellenõriznie szóval még kicsit lassabb is lesz a kód...
Több zóna esetén:
3. megoldás V2:
Létrehozol 1 tömböt amiben tárolod a játékos zóna ID-ját...
 
new zone[MAX_PLAYERS];

 
Ajánlott a zóna ID-kat konstans-al használni hogy egyszerûsítsd a dolgod...
 
#define ZONE_NONE
#define ZONE_DM1
#define ZONE_DM2
#define ZONE_DERBY
#define ZONE_RACE

 
Zóna értékét változtatod minden zóna belépésnél / kilépésnél...
 
zone[playerid] = ZONE_NONE;

 

zone[playerid] = ZONE_DM1;

 
Amikor elhagyja a játékos a szervert akkor ZONE_NONE-ra állítod !
Feltétel:
 
if(zone[playerid] == ZONE_DM1)

 

if(zone[playerid] == ZONE_DERBY || zone[playerid] == ZONE_RACE)

 
És ha akarod nem csak pozíciót hanem Virtuális Világot állítasz be egyes zónákhoz és akár ezt is használhatod Zóna azonosításnak csak akkor figyelj milyen scripteket alkalmazol a módod mellett !
http://wiki.sa-mp.com/wiki/SetPlayerVirtualWorld
http://wiki.sa-mp.com/wiki/GetPlayerVirtualWorld
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Nem elérhető Cappsy

  • Adminisztrátor
  • 2754
    • Profil megtekintése
Parancs
« Válasz #5 Dátum: 2013. február 25. - 18:06:33 »
0 Show voters
Csinálunk egy változót ez a dm
 
new dm[MAX_PLAYERS];

 
most hogy ez megvan betudjuk állítani hogy a mi legyen ha a dm 1 és 0
Feladatok:
Létrehozzuk a változót :
 
new dm[MAX_PLAYERS];

 
Az disconnectnél és a connectél beállítjuk 0 ra
 
    public OnPlayerConnect(playerid)
    {
        dm[playerid] = 0;
        return 1;
    }
    public OnPlayerDisconnect(playerid, reason)
    {
    dm[playerid] = 0;
    return 1;
    }

 
3. csinálunk vele amit kell
Mi micsoda??:
 
    if(!strcmp(cmdtext,\"/speed\",true))
    {
            if(dm[playerid] == 1) { return SendClientMessage(playerid,0xFF6600FF,\"Itt nem tudod használni ezt a parancsot !\"); }//definiáljuk hogyha a dm egyenlõ 1 el akkor mi legyen...ez most kiír egy szöveget
            // ide kell írni alá hogy mi legyen hogyha a dm egyenlõ 0-val
            return 1;
    }

 


    if(!strcmp(cmdtext,\"/dmbe\",true))
    {
           dm[playerid] = 1;//az érték 1
            return 1;
    }
    if(!strcmp(cmdtext,\"/dmki\",true))
    {
           dm[playerid] = 0;// az érték 0
            return 1;
    }

 
Kérdések:
Miért kell a parancsba betenni hogy a dm egyenlõ legyen 1 el??
Mivel az on palyer connecnél alapból nulla
Miért kell kiszedni ha kijön??
Hogyha már ne dm be van akkor tudja használni
A csatlakozásnál miért kell 0 ra állítani??
Hogy tudja használni a parancsokat
UI: van olyan témahely ahol tutorialok vannak
http://sampforum.hu/index.php?board=17.0
((megelõztek de mind1 2 jobb mint 1 :)))
UI: szép TUT :)
kaptál likot :)
« Utoljára szerkesztve: 2013. február 25. - 18:09:13 írta cappsy »

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Parancs
« Válasz #6 Dátum: 2013. február 25. - 18:15:54 »
0 Show voters
A csatlakozásnál miért kell 0 ra állítani??
Hogy tudja használni a parancsokat
[/quote]
és miért kell kilépésnél is 0-ra állítani? :)
elég 1x és azért jobb kilépésnél mert akkor az 1. csatlakozásnál nem fut le feleslegesen a kód
és a kezdõk sokszor rosszul használják a ciklusokat és bele számolhat olyan játékost a DM-be aki már offline :) + inkább ne akkor lassítsuk a játékost amikor jönne játszani :D ha egy RP módnál van ( ne legyen sok ) 300 változó/tömb cella amit resetel a szerver az már felesleges hátráltatás ha a játékos jönne játszani akkor ne töltsön neki annyit a szerver :)
 
new count;
for(new i; i < GetMaxPlayers(); i++)
{
if(dm) { count++; }
}

 
30 slotos szervernél lefut 0-tól 29-ig a ciklus és minden olyan ID-t beleszámol akinél a DM 1...persze ezt is ki lehet védeni és lehetpség szerint ki is kell...
persze meg van annak is az elõnye hogy csatlakozásnál reseteljük az adatokat :)
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Nem elérhető Cappsy

  • Adminisztrátor
  • 2754
    • Profil megtekintése
Parancs
« Válasz #7 Dátum: 2013. február 25. - 18:19:07 »
0 Show voters
Idézetet írta: Kovacs_Richard date=1361812554\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"34164\" data-ipsquote-contentclass=\"forums_Topic

A csatlakozásnál miért kell 0 ra állítani??
Hogy tudja használni a parancsokat
és miért kell kilépésnél is 0-ra állítani? :)
elég 1x és azért jobb kilépésnél mert akkor az 1. csatlakozásnál nem fut le feleslegesen a kód
és a kezdõk sokszor rosszul használják a ciklusokat és bele számolhat olyan játékost a DM-be aki már offline :) + inkább ne akkor lassítsuk a játékost amikor jönne játszani :D ha egy RP módnál van ( ne legyen sok ) 300 változó/tömb cella amit resetel a szerver az már felesleges hátráltatás ha a játékos jönne játszani akkor ne töltsön neki annyit a szerver :)
 
new count;
for(new i; i < GetMaxPlayers(); i++)
{
if(dm) { count++; }
}

 
30 slotos szervernél lefut 0-tól 29-ig a ciklus és minden olyan ID-t beleszámol akinél a DM 1...persze ezt is ki lehet védeni és lehetpség szerint ki is kell...
persze meg van annak is az elõnye hogy csatlakozásnál reseteljük az adatokat :)
 
[/quote]
hm....
Én így tanultam így használom :)

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Parancs
« Válasz #8 Dátum: 2013. február 25. - 18:25:01 »
0 Show voters
Idézetet írta: cappsy date=1361812747\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"34164\" data-ipsquote-contentclass=\"forums_Topic


 
A csatlakozásnál miért kell 0 ra állítani??
Hogy tudja használni a parancsokat
és miért kell kilépésnél is 0-ra állítani? :)
elég 1x és azért jobb kilépésnél mert akkor az 1. csatlakozásnál nem fut le feleslegesen a kód
és a kezdõk sokszor rosszul használják a ciklusokat és bele számolhat olyan játékost a DM-be aki már offline :) + inkább ne akkor lassítsuk a játékost amikor jönne játszani :D ha egy RP módnál van ( ne legyen sok ) 300 változó/tömb cella amit resetel a szerver az már felesleges hátráltatás ha a játékos jönne játszani akkor ne töltsön neki annyit a szerver :)
 
new count;
for(new i; i < GetMaxPlayers(); i++)
{
if(dm) { count++; }
}

 
30 slotos szervernél lefut 0-tól 29-ig a ciklus és minden olyan ID-t beleszámol akinél a DM 1...persze ezt is ki lehet védeni és lehetpség szerint ki is kell...
persze meg van annak is az elõnye hogy csatlakozásnál reseteljük az adatokat :)
 
[/quote]
hm....
Én így tanultam így használom :)
 
[/quote]
akkor csak gondolj bele logikusan 2x fut le mondhatni egymás után a kód :) van értelme? de te tudod én nem szólok bele, én meg sehogy nem tanultam és helyzettõl függõen használom :D de én minél gyorsabb kódot szeretnék :) minden felesleges részt mellõzök :)
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Nem elérhető Cappsy

  • Adminisztrátor
  • 2754
    • Profil megtekintése
Parancs
« Válasz #9 Dátum: 2013. február 25. - 18:26:22 »
0 Show voters
Idézetet írta: Kovacs_Richard date=1361813101\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"34164\" data-ipsquote-contentclass=\"forums_Topic


 

 
A csatlakozásnál miért kell 0 ra állítani??
Hogy tudja használni a parancsokat
és miért kell kilépésnél is 0-ra állítani? :)
elég 1x és azért jobb kilépésnél mert akkor az 1. csatlakozásnál nem fut le feleslegesen a kód
és a kezdõk sokszor rosszul használják a ciklusokat és bele számolhat olyan játékost a DM-be aki már offline :) + inkább ne akkor lassítsuk a játékost amikor jönne játszani :D ha egy RP módnál van ( ne legyen sok ) 300 változó/tömb cella amit resetel a szerver az már felesleges hátráltatás ha a játékos jönne játszani akkor ne töltsön neki annyit a szerver :)
 
new count;
for(new i; i < GetMaxPlayers(); i++)
{
if(dm) { count++; }
}

 
30 slotos szervernél lefut 0-tól 29-ig a ciklus és minden olyan ID-t beleszámol akinél a DM 1...persze ezt is ki lehet védeni és lehetpség szerint ki is kell...
persze meg van annak is az elõnye hogy csatlakozásnál reseteljük az adatokat :)
 
[/quote]
hm....
Én így tanultam így használom :)
 
[/quote]
akkor csak gondolj bele logikusan 2x fut le mondhatni egymás után a kód :) van értelme? de te tudod én nem szólok bele, én meg sehogy nem tanultam és helyzettõl függõen használom :D de én minél gyorsabb kódot szeretnék :) minden felesleges részt mellõzök :)
 
[/quote]
Igaz azért mondom hogy igazad van mert kevesebb ramot használ :)
Csak én még ilyen régimódi vagyok hogy ezeket nem használom

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Parancs
« Válasz #10 Dátum: 2013. február 25. - 18:47:00 »
0 Show voters
ne állj a változás útjába :D jön az új infó fogadd be :P
a konokság nem régimódi :D tanulni mindig lehet :) de ha elmondod az érveidet talán én tanulok valamit azt, hogy miért is érné meg mind2 helyen resetelni az adatokat :) kíváncsi vagyok a titkára hátha van valami amire én nem gondoltam és pont ez kell ahhoz hogy jobbá tegyem a kódjaimat :)
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
Parancs
« Válasz #11 Dátum: 2013. február 26. - 08:10:32 »
0 Show voters
[mod] Idézgetést befejezni. [/mod]

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal