-
Sziasztok! A problémám az lenne, hogy Ladmin 4 adminrendszert használok és amikor kick-elek vagy banolok valakit, csak annyit ír a szerver az illetőnek, hogy server closed the connection viszont az indokot nem írja ki. Hogyan tudnám elérni hogy az indokot is kiírja?
-
Másold be a kick parancsod és hozzá írom neked.
-
hozzá van írva mert a többi player látja csak az illető nem akit éppen kirúgtam vagy banoltam :/
-
Késleltesd a bannolást, hogy hamarabb kiirja a szerver.
-
húha :/ azt hogy kell?
-
Küld el a parancsot, megcsinálom neked.
-
http://wiki.sa-mp.com/wiki/Kick
As of SA-MP 0.3x, any action taken directly before Kick() (such as sending a message with SendClientMessage) will not reach the player. A timer must be used to delay the kick.
SA-MP 0.3x óta azok a funkciók, amelyek a Kick() előtt vannak (pl.: SendClientMessage), nem jutnak el a játékoshoz. Egy időzítőt alkalmazunk arra, hogy egy kis időbeli különbség legyen.
-
dcmd_kick(playerid,params[]) {
if(PlayerInfo[playerid][LoggedIn] == 1) {
if(PlayerInfo[playerid][Level] >= 3) {
new tmp[256], tmp2[256], Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
if(!strlen(params)) return SendClientMessage(playerid, red, \"HASZNÁLAT: /kick [playerid] [reason]\");
new player1, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[128];
player1 = strval(tmp);
if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID && player1 != playerid && (PlayerInfo[player1][Level] != ServerInfo[MaxAdminLevel]) ) {
GetPlayerName(player1, playername, sizeof(playername)); GetPlayerName(playerid, adminname, sizeof(adminname));
CMDMessageToAdmins(playerid,\"KICK\");
if(!strlen(tmp2)) {
format(string,sizeof(string),\"%s -t kidobta %s [indok nélkül] \",playername,adminname); SendClientMessageToAll(grey,string);
SaveToFile(\"KickLog\",string); print(string); return Kick(player1);
} else {
format(string,sizeof(string),\"%s -t kidobta %s [indok: %s] \",playername,adminname,params[2]); SendClientMessageToAll(grey,string);
SaveToFile(\"KickLog\",string); print(string); return Kick(player1); }
} else return SendClientMessage(playerid, red, \"Játékos nincs csatlakozva vagy magadat akartad, vagy egy nagyobb szintű admint akartál\");
} else return SendClientMessage(playerid,red,\"HIBA: Te nem vagy egy elég magas szint hogy használd ezt a parancsot\");
} else return SendClientMessage(playerid,red,\"HIBA: You must be logged in to use this commands\");
}
dcmd_ban(playerid,params[]) {
if(PlayerInfo[playerid][LoggedIn] == 1) {
if(PlayerInfo[playerid][Level] >= 4) {
new tmp[256], tmp2[256], Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
if(!strlen(params)) return SendClientMessage(playerid, red, \"HASZNÁLAT: /ban [playerid] [indok]\");
if(!strlen(tmp2)) return SendClientMessage(playerid, red, \"HIBA: Ki hagytad az indokot\");
new player1, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[128];
player1 = strval(tmp);
if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID && player1 != playerid && (PlayerInfo[player1][Level] != ServerInfo[MaxAdminLevel]) ) {
GetPlayerName(player1, playername, sizeof(playername)); GetPlayerName(playerid, adminname, sizeof(adminname));
new year,month,day,hour,minuite,second; getdate(year, month, day); gettime(hour,minuite,second);
CMDMessageToAdmins(playerid,\"BAN\");
format(string,sizeof(string),\"%s -t kidobta (BANN) %s [indok: %s] [Dátum: %d/%d/%d] [idő: %d:%d]\",playername,adminname,params[2],day,month,year,hour,minuite);
SendClientMessageToAll(grey,string);
SaveToFile(\"BanLog\",string);
print(string);
if(udb_Exists(PlayerName2(player1)) && PlayerInfo[player1][LoggedIn] == 1) dUserSetINT(PlayerName2(player1)).(\"banned\",1);
format(string,sizeof(string),\"BANN-olta: %s. Indok: %s\", adminname, params[2] );
return BanEx(player1, string);
} else return SendClientMessage(playerid, red, \"Játékos nincs csatlakozva vagy magadat akartad, vagy egy nagyobb szintű admint akartál\");
} else return SendClientMessage(playerid,red,\"HIBA: Te nem vagy egy elég magas szint hogy használd ezt a parancsot\");
} else return SendClientMessage(playerid,red,\"HIBA: You must be logged in to use this commands\");
}
valaki tudna esetleg úgy segíteni, hogy skype-on keresztül?
[mod]Legközelebb ne hagyd el a pawn codet, és használd a módosítás gombot, köszönöm.[/mod]
-
Ahogy Anthony leirta, csinálj egy timert, hogy késleltesse a kicket és a bannolást.
-
milyen pawn code-ot hogytam el? O.o? oda írtam
amúgy a timerrel nem tudok bánni az a baj, hogy csak a nagyon alap dolgokat tudom pl teleport készítése fegyver lehívása statikus autó hozzáadása skinek módosítása mindenki számára látható üzenet ezeket az alapokat tudom, de a timerrel nem tudok bánni, mert van olyan mázlim hogy mindig úgy csinálom hogy az nem jó a neten találhat tutorialok nagy része meg nem is tutorial csak arra ad lehetőséget hogy lemásoljam az ő munkáját de joformán semmit nem magyaráznak el hogy én is megértsem mi történik :/
-
forward FixedKick(playerid);
stock JoKick(playerid) // létrehozunk egy \"UjKick\" nevű funkciót, \"playerid\" paraméterrel
{
SetTimerEx(\"FixedKick\", 1000, false, \"i\", playerid); //Beállítunk egy időzítőt a \"FixedKick\" callbackre, 1000 ms (1 másodperc) időtartamra, nem ismétlődően, és átadunk neki egy integer változót, aminek az értéke playerid.
return 1; //visszatérünk 1-el
}
public FixedKick(playerid) //Létrehozzuk a \"FixedKick\" callbacket, playerid paraméterrel.
{
Kick(playerid); //Kirúgjuk a paraméterben megkapott idvel rendelkező játékost
return 1; //Visszatérünk 1-el.
}
Teendőd: Átírni a scriptedben lévő összes olyan Kick() funkciót JoKick()-re, amelynél szeretnéd, hogy üzenetet küldjön, vagy valami történjen előtte.
-
:/ nem jó
-
Ezeket írd a script végére:
stock iBan(playerid)
{
SetTimerEx(\"iBT\", 200, false, \"i\", playerid);
}
forward iBT(playerid);
public iBT(playerid)
{
return Ban(playerid);
}
stock iKick(playerid)
{
SetTimerEx(\"iKT\", 200, false, \"i\", playerid);
}
forward iKT(playerid);
public iKT(playerid)
{
return Kick(playerid);
}
Ezután keresd meg a dcmd_kick és dcmd_ban és ott írd át Kick(playerid); -t iKick(playerid);-re illetve Ban(playerid); -t iBan(playerid); -re, majd F5-nyomj!
(Ugyan ezt írta le ! a n t h o n y) működnie kell!
-
pedig nem működik egy rakás hibakódot kapok
-
Légyszíves másold már be, hogy tudjunk segíteni.
-
már egyszer bemásoltam
dcmd_kick(playerid,params[]) {
if(PlayerInfo[playerid][LoggedIn] == 1) {
if(PlayerInfo[playerid][Level] >= 3) {
new tmp[256], tmp2[256], Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
if(!strlen(params)) return SendClientMessage(playerid, red, \"HASZNÁLAT: /kick [playerid] [reason]\");
new player1, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[128];
player1 = strval(tmp);
if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID && player1 != playerid && (PlayerInfo[player1][Level] != ServerInfo[MaxAdminLevel]) ) {
GetPlayerName(player1, playername, sizeof(playername)); GetPlayerName(playerid, adminname, sizeof(adminname));
CMDMessageToAdmins(playerid,\"KICK\");
if(!strlen(tmp2)) {
format(string,sizeof(string),\"%s -t kidobta %s [indok nélkül] \",playername,adminname); SendClientMessageToAll(grey,string);
SaveToFile(\"KickLog\",string); print(string); return Kick(player1);
} else {
SaveToFile(\"KickLog\",string); print(string); return Kick(player1); }
} else return SendClientMessage(playerid, red, \"Játékos nincs csatlakozva vagy magadat akartad, vagy egy nagyobb szintű admint akartál\");
} else return SendClientMessage(playerid,red,\"HIBA: Te nem vagy egy elég magas szint hogy használd ezt a parancsot\");
} else return SendClientMessage(playerid,red,\"HIBA: You must be logged in to use this commands\");
}
dcmd_ban(playerid,params[]) {
if(PlayerInfo[playerid][LoggedIn] == 1) {
if(PlayerInfo[playerid][Level] >= 4) {
new tmp[256], tmp2[256], Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
if(!strlen(params)) return SendClientMessage(playerid, red, \"HASZNÁLAT: /ban [playerid] [indok]\");
if(!strlen(tmp2)) return SendClientMessage(playerid, red, \"HIBA: Ki hagytad az indokot\");
new player1, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[128];
player1 = strval(tmp);
if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID && player1 != playerid && (PlayerInfo[player1][Level] != ServerInfo[MaxAdminLevel]) ) {
GetPlayerName(player1, playername, sizeof(playername)); GetPlayerName(playerid, adminname, sizeof(adminname));
new year,month,day,hour,minuite,second; getdate(year, month, day); gettime(hour,minuite,second);
CMDMessageToAdmins(playerid,\"BAN\");
format(string,sizeof(string),\"%s -t kidobta (BANN) %s [indok: %s] [Dátum: %d/%d/%d] [idő: %d:%d]\",playername,adminname,params[2],day,month,year,hour,minuite);
SendClientMessageToAll(grey,string);
SaveToFile(\"BanLog\",string);
print(string);
if(udb_Exists(PlayerName2(player1)) && PlayerInfo[player1][LoggedIn] == 1) dUserSetINT(PlayerName2(player1)).(\"banned\",1);
format(string,sizeof(string),\"BANN-olta: %s. Indok: %s\", adminname, params[2] );
return BanEx(player1, string);
} else return SendClientMessage(playerid, red, \"Játékos nincs csatlakozva vagy magadat akartad, vagy egy nagyobb szintű admint akartál\");
} else return SendClientMessage(playerid,red,\"HIBA: Te nem vagy egy elég magas szint hogy használd ezt a parancsot\");
} else return SendClientMessage(playerid,red,\"HIBA: You must be logged in to use this commands\");
}
-
Én a hibákra gondoltam... :facepalm:
Vagy az ladmin4v2 -t töltsd fel pastebinre (http://pastebin.com/) és én megcsinálom neked hogy működjön.
-
nekem csak sima 4 van mert ezt leszámítva nagyon jól működik amíg a 4v2 nem
http://pastebin.com/LDD5kpWk
-
Tessék itt is van! :D http://pastebin.com/aErpN5RE
Ha nem sikerülne F5-el lefutattni akkor (lehet rossz az includeod) itt van ez: http://www.mediafire.com/download/0ou201lzbcdwvdt/ladmin4.rar
(mediafires link 1-2 hónapig fog élni a pastebin elvileg nem fog lejárni...)
Remélem tudtam segíteni! :D
-
köszi :* ezer hálla :) mindenkinek a köszönöm a témát zárom ha valaki szeretne még valamit privátba írjon legyen szíves