-
Sziasztok!
Szeretnék csinálni egy bankrablást és hogy tudnám megcsinálni, hogy csak akkor lehessen rabolni ha van fent online admin?
Köszönöm elõre is a gyors válaszokat!
-
gyors válasz? az nem megy am meg kiindulásnak ennyit segítek:
#include
stock vanadmin()
{
new bool:van = false;
for(new i=0;i < MAX_PLAYERS;i++)
{
if(!IsPlayerConnected(i)) continue;
if(IsPlayerAdmin(i))
{
van = true;
break;
}
}
return van;
}
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\"asdasdasd\");
print(\"--------------------------------------\\n\");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(\"/bankrob\", cmdtext, true, 8) == 0)
{
if(!vanadmin()) return SendClientMessage(playerid,-1,\"Nincs admin a szerón most nem rabolhatsz\");
//rabláshoz kellõ dolgaid
return 1;
}
return 0;
}
megj.: ez rcon adminhoz van(ergó ha rcon login-olt valaki azt veszi adminnak) de szerintem tudod módosítani hogy illeszkedjen tiédhez ha nem írj
rem kicsit segít na byebi :smokin:
-
És hogy ha elveszem a szintjét vagy növelem neki? akkor is menni fog? Mert úgy kéne hogy minimum 2 admin nak kellene online lennie
-
Ehhez már az adminrendszered kéne. Milyen adminrendszert használsz?
-
Saját.
-
Akkor viszont kéne a változó neve..
Az adminrendszeredbe van egy kódod például: /setlevel? (De mind1 milyen csak hogy tudjuk mikor kérdezed le hogy a játékosnak hanyas a szintje)
És azt be tudnád illeszteni ide? az segítene..
-
Erre gondolsz? if(PlayerInfo[playerid][pLevel] ?
-
Nagyszerû ;)
#include <a_samp>
#include <zcmd>
new onlineadmin;
public OnPlayerConnect(playerid)
{
if(PlayerInfo[playerid][pLevel] > 0) onlineadmin++;
return 1;
}
public OnPlayerDisconnected(playerid,reason)
{
if(PlayerInfo[playerid][pLevel] > 0) onlineadmin--;
return 1;
}
CMD:rabol(playerid)
{
if(onlineadmin == 0) return SendClientMessage(playerid,-1,\"Nincs Online Admin!\");
//Ide a rablás kód...
return 1;
}
-
Jó ez mind szép és jó és ha amikor feljön 0 ás a szintje és utána kapja meg akkor nem ad hozzá +1 et.
-
Amikor admint adsz az illetõnek akkor csak oda írod a parancsba hogy:
onlineadmin++;
-
Amikor admint adsz az illetõnek akkor csak oda írod a parancsba hogy:
onlineadmin++;
[/quote]
Ja és még add hozzá ezt:
if(PlayerInfo[\"megváltoztatott játékos id-je\"][pLevel] == 0) onlineadmin--;
-
Igen, eddig megvan de, hogy ha beírom, hogy if(PlayerInfo[player1][pLevel] >= 1) onlineadmin++ akkor hogy ha mindig 1 nél nagyob szintet adok hozzá akkor hozzá fog adni +1 et nem?
-
Hali megpróbálom kicsit egyszerûbben elmagyarázni.
szóval az onlineadmin az egy sima változó,a játékos adatihoz nincsen semmi köze, a pLevel pedig enumban tárolt változó,ami a játékos tulajdonsága.
Na ez magyarra fordítva:
if(PlayerInfo[player1][pLevel] >= 1) Ha a játékos szintje kisebb vagy egyenlõ 1-el. (tehát 0-nál nagyobb),
onlineadmin : Egy változó,jelen esetben egész típusú (csak egész számokat tárol),ez nem módosít semmit a játékoson.
Ez egyszerûen egy számláló.
Tehát ha fut a szerver és nincs rajta senki akkor onlineadmin = 0
Ha feljön valaki akkor ellenõrzi a szerver,hogy mekkora a játékos szintje, ha nagyobb mint 0. Akkor az onlineadmin értéke 1-el nõ. Tehát onlineadmin = 1
Viszont ha egy olyan játékos jön fel akinek 0 a szintje, akkor az onlineadmin ugyan úgy 0 marad.
Tehát az onlineadmin csak a megszámolja,hogy olyan játékos van fent akinek a szintje nem 0.
Tehát elindul a szerver,
onlineadmin 0 értéket kap.
Feljön pistike akinek a pLevelje 0, akkor az onlineadmin 0 marad,mivel nem admin.
Feljon admin1 akinek a pLevelje 5 akkor az onlineadmin 1 lesz,mivel admin.
Feljön sanyika akinek pLevelje 0 akkor az onlineadmin 1 marad,mivel nem admin.
Ha lemegy admin 1 akkor az online admin értéke 1-el csökken,tehát 0 lesz. (Ha nincs fent más admin)
Ha közben feljött mondjuk két admin, akkor az onlineadmin már 3-as értéket kapott és mikor lemegy 1 admin, akkor az értéke 1-el csökken.
Remélem így már érted! :)
-
if(adottadminszint == 0 && PlayerInfo[modositottjatekosid][pLevel] > 0) // Ha elvetted az admint
{ onlineadmin++; }
if(adottadminszint != 0 && PlayerInfo[modositottjatekosid][pLevel] == 0) // Ha admint csináltál belõle
{ onlineadmin--; }
// FONTOS HOGY A SZINT ÁLLÍTÁS EZ A KÓD ALATT LEGYEN!!!
PlayerInfo[modositottjatekosid][pLevel] = adottadminszint;
vagy megszámolod hogy mennyi admin online:
stock vanadmin()
{
for(new i=0;i < MAX_PLAYERS;i++)
{
if(!IsPlayerConnected(i) || !IsPlayerAdmin(i)) { continue; }
return true;
}
return false;
}