Szerző Téma: ban  (Megtekintve 1222 alkalommal)

ban
« Dátum: 2014. március 21. - 14:13:37 »
0 Show voters
Sziasztok!
Valaki tudna nekem segíteni abba hogy ha bannolok valakit akkor ki írja neki az indokot és ugyan ezt a kicknél?
ban:
 
COMMAND:ban(playerid, params[])
{
// Setup local variables
new PlayerToBan, Days, Hours, Reason[128], TotalBanTime, Msg[128], Name[24], AdminName[24];
// Send the command to all admins so they can see it
SendAdminText(playerid, \"/ban\", params);
// Check if the player has logged in
if (APlayerData[playerid][LoggedIn] == true)
{
// Check if the player\'s admin-level is at least 3
if (APlayerData[playerid][PlayerLevel] >= 3)
{
   if (sscanf(params, \"uiis[128]\", PlayerToBan, Days, Hours, Reason))
      SendClientMessage(playerid, 0xFF0000AA, \"Használat: \\\"/ban <név/ID> <Nap> <Óra> <Oka>\\\"\");
   else
   {
      if (IsPlayerConnected(PlayerToBan))
      {
         // Get the names of the player and the admin who executed the ban
         GetPlayerName(playerid, AdminName, sizeof(AdminName));
         GetPlayerName(PlayerToBan, Name, sizeof(Name));
         // Increase the number of bans
         APlayerData[PlayerToBan][bans]++;
         // Calculate the total bantime (when the player can login again)
         TotalBanTime = (Days * 86400) + (Hours * 3600) + gettime();
         // Check if this is the player\'s 5th ban
         if (APlayerData[PlayerToBan][bans] == 5)
            APlayerData[PlayerToBan][banTime] = 2147483640; // Make the ban permanent (as high as it can go)
         else
            APlayerData[PlayerToBan][banTime] = TotalBanTime; // Store this value for the player
         // Inform the player about his ban
         // Check if this is the player\'s 5th ban
         if (APlayerData[PlayerToBan][bans] == 5)
         {
            format(Msg, 128, \"Véglegesen bannolt %s, ez volt az 5. ban.\", AdminName);
            SendClientMessage(PlayerToBan, 0x808080FF, Msg);
         }
         else
         {
            format(Msg, 128, \"Bannolva lettél %s által %i napra és %i órára.\", AdminName, Days, Hours);
            SendClientMessage(PlayerToBan, 0x808080FF, Msg);
            format(Msg, 128, \"Oka: %s\", Reason);
            SendClientMessage(PlayerToBan, 0x808080FF, Msg);
            format(Msg, 128, \"Ez volt az %i ban, 5.-re örökre repülsz.\", APlayerData[PlayerToBan][bans]);
            SendClientMessage(PlayerToBan, 0x808080FF, Msg);
         }
         // Kick the player (his data will be saved)
         Kick(PlayerToBan);
         // Inform everybody else which player was banned and for how long
         format(Msg, 128, \"[%s] %s bannolta %s játékost %i napra és %i órára.\", AdminLevelName[APlayerData[playerid][PlayerLevel]], AdminName, Name, Days, Hours);
         SendClientMessageToAll(0x808080FF, Msg);
      }
   }
}
else
    return 0;
}
else
    return 0;
return 1;
}

 
kick:
 
COMMAND:kick(playerid, params[])
{
new PlayerToKick, Reason[128], ReasonMsg[128], Name[24];
// Send the command to all admins so they can see it
SendAdminText(playerid, \"/kick\", params);
// Check if the player has logged in
if (APlayerData[playerid][LoggedIn] == true)
{
// Check if the player\'s admin-level is at least 1
if (APlayerData[playerid][PlayerLevel] >= 1)
{
   if (sscanf(params, \"us[128]\", PlayerToKick, Reason)) SendClientMessage(playerid, 0xFF0000AA, \"Használat: \\\"/kick <név/ID> <Oka>\\\"\");
   else
      if (IsPlayerConnected(PlayerToKick)) // If the player is a valid playerid (he\'s connected)
      {
         // Get the name of the player who warned the player
         GetPlayerName(playerid, Name, sizeof(Name));
         // Send the warned player a message who kicked him and why he\'s been kicked
         format(ReasonMsg, 128, \"Kickelve lettél [%s] %s által.\", AdminLevelName[APlayerData[playerid][PlayerLevel]], Name);
         SendClientMessage(PlayerToKick, 0xFF0000FF, ReasonMsg);
         format(ReasonMsg, 128, \"Oka: %s\", Reason);
         SendClientMessage(PlayerToKick, 0xFF0000FF, ReasonMsg);
         // Kick the player
                  Kick(PlayerToKick);
      }
      else
          SendClientMessage(playerid, 0xFF0000FF, \"Nincs ilyen játékos online.\");
}
else
    return 0;
}
else
    return 0;
// Let the server know that this was a valid command
return 1;
}

Nem elérhető mefi88

  • 312
    • Profil megtekintése
ban
« Válasz #1 Dátum: 2014. március 21. - 14:38:31 »
0 Show voters
Öhm, most lehet, hogy én vagyok fáradt, de benne van a kódban a kért dolog, nem!? :doubt:
SendClientMessage funkció felel ezért a dologért, ami ott csücsül a bemásolt kódban.

Nem elérhető ZSOLTI99

  • 1827
    • Profil megtekintése
ban
« Válasz #2 Dátum: 2014. március 21. - 14:39:57 »
0 Show voters
http://wiki.sa-mp.com/wiki/Kick 0.3z nem mükszik a kicknék az üzenet küldés de timer segítségével ki lehet javítani

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
ban
« Válasz #3 Dátum: 2014. március 21. - 14:53:31 »
0 Show voters
Ahogyan a Wikiben is áll: a Kick() függvény elõtt semelyik másik, a player számára eljuttatandó dolog nem jut el a playerig, pl. a SendClientMessage üzenetét sem látja a játékos, ugyanis kirúgja õt a rendszer, mielõtt még meglátná az üzenetet.
 
Important Note: 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.[/quote]
ZSOLTI99, nem 0.3z-tõl \"nem mükszik\", hanem a többi verziónál is így volt. Valamint nem \"nem mükszik\", hanem egyszerûen gyorsabban lesz kirúgva a játékos, minthogy ahhoz eljutni a SendClientMessage függvény által elküldött üzenet, vagy bármi más, számára alapesetben látszódó dolog. Tehát mûködni mûködik. Ahogyan az \"üzenet küldés\" is.
A megoldás rá az, hogy egy timerrel késleleted a Kick() függvényt. Talán egy 100 ezredmásodpercre beállított, nem ismétlõdõ timer is elég hozzá, nem kell több idõt várni. Vagy ha igen, picit megemeled mondjuk 200-ra, de szerintem már 0,1 mp-s timerrel is jó lesz a dolog.

ban
« Válasz #4 Dátum: 2014. március 21. - 15:09:14 »
0 Show voters
Ezt amit mondtál bele tudnád nekem írni
Üdv
Hero

Nem elérhető ZSOLTI99

  • 1827
    • Profil megtekintése
ban
« Válasz #5 Dátum: 2014. március 21. - 15:29:54 »
0 Show voters
Idézetet írta: Dfoglalo date=1395410011\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"47270\" data-ipsquote-contentclass=\"forums_Topic
Ahogyan a Wikiben is áll: a Kick() függvény elõtt semelyik másik, a player számára eljuttatandó dolog nem jut el a playerig, pl. a SendClientMessage üzenetét sem látja a játékos, ugyanis kirúgja õt a rendszer, mielõtt még meglátná az üzenetet.
 
Important Note: 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.
ZSOLTI99, nem 0.3z-tõl \"nem mükszik\", hanem a többi verziónál is így volt. Valamint nem \"nem mükszik\", hanem egyszerûen gyorsabban lesz kirúgva a játékos, minthogy ahhoz eljutni a SendClientMessage függvény által elküldött üzenet, vagy bármi más, számára alapesetben látszódó dolog. Tehát mûködni mûködik. Ahogyan az \"üzenet küldés\" is.
A megoldás rá az, hogy egy timerrel késleleted a Kick() függvényt. Talán egy 100 ezredmásodpercre beállított, nem ismétlõdõ timer is elég hozzá, nem kell több idõt várni. Vagy ha igen, picit megemeled mondjuk 200-ra, de szerintem már 0,1 mp-s timerrel is jó lesz a dolog.
 
[/quote]
Én teszteltem az ilyen dolgot és 0.3e verzión mûködött rendesen

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
ban
« Válasz #6 Dátum: 2014. március 21. - 15:32:05 »
0 Show voters
A Kick-eknél, pl.: a
 
Kick(PlayerToKick);

 
-nél a \"Kick\" feliratot írd át \"KickEx\"-re, pl.:
 
KickEx(PlayerToKick);

 
majd valahová a callbackokon kívülre, pl. a mód legvégére tedd be a következõ forráskódot, melyet most gyorsan megírtam neked:
 
stock KickEx(playerid)
{
    SetTimerEx(\"KickExTimer\", 100, false, \"i\", playerid);
}
forward KickExTimer(playerid);
public KickExTimer(playerid)
{
    Kick(playerid);
}

 
De egyébként ugyanezzel a forráskóddal csinálhatod azt is, hogy a
 
KickEx()

 
helyett
 
SetTimerEx(\"KickExTimer\", 100, false, \"i\", playerid);

 
-t használsz, de így custom függvényként sokkal rövidebb a dolog, szóval szerintem csináld úgy, ahogy leírtam.


ZSOLTI99, akkor te valami mást csinálhattál, ugyanis ott sem mûködik rendesen. :) Vagyis rendesen mûködik, mindenhol, itt is. Ugyanis az a rendes mûködés, ha a játékost kirúgja a függvény, úgy, hogy az elõtte lévõ dolgok lefutnak, de nem jutnak el a playerhez, aki így pl. a SendClientMessage függvény által küldött üzenetet sem tudja majd elolvasni.

Nem elérhető ZSOLTI99

  • 1827
    • Profil megtekintése
ban
« Válasz #7 Dátum: 2014. március 21. - 16:13:52 »
0 Show voters
Lehet hogy igazad van én már olyan rég csináltam ezt a kickest hogy nem is emlékszem arra hogy mûködik vagy nem de én úgy emlékszem mintha mûködött volna de mind1 lehet rosszúl emlékszem.

ban
« Válasz #8 Dátum: 2014. március 21. - 14:13:37 »
0 Show voters
Sziasztok!
Valaki tudna nekem segíteni abba hogy ha bannolok valakit akkor ki írja neki az indokot és ugyan ezt a kicknél?
ban:
 
COMMAND:ban(playerid, params[])
{
// Setup local variables
new PlayerToBan, Days, Hours, Reason[128], TotalBanTime, Msg[128], Name[24], AdminName[24];
// Send the command to all admins so they can see it
SendAdminText(playerid, \"/ban\", params);
// Check if the player has logged in
if (APlayerData[playerid][LoggedIn] == true)
{
// Check if the player\'s admin-level is at least 3
if (APlayerData[playerid][PlayerLevel] >= 3)
{
   if (sscanf(params, \"uiis[128]\", PlayerToBan, Days, Hours, Reason))
      SendClientMessage(playerid, 0xFF0000AA, \"Használat: \\\"/ban <név/ID> <Nap> <Óra> <Oka>\\\"\");
   else
   {
      if (IsPlayerConnected(PlayerToBan))
      {
         // Get the names of the player and the admin who executed the ban
         GetPlayerName(playerid, AdminName, sizeof(AdminName));
         GetPlayerName(PlayerToBan, Name, sizeof(Name));
         // Increase the number of bans
         APlayerData[PlayerToBan][bans]++;
         // Calculate the total bantime (when the player can login again)
         TotalBanTime = (Days * 86400) + (Hours * 3600) + gettime();
         // Check if this is the player\'s 5th ban
         if (APlayerData[PlayerToBan][bans] == 5)
            APlayerData[PlayerToBan][banTime] = 2147483640; // Make the ban permanent (as high as it can go)
         else
            APlayerData[PlayerToBan][banTime] = TotalBanTime; // Store this value for the player
         // Inform the player about his ban
         // Check if this is the player\'s 5th ban
         if (APlayerData[PlayerToBan][bans] == 5)
         {
            format(Msg, 128, \"Véglegesen bannolt %s, ez volt az 5. ban.\", AdminName);
            SendClientMessage(PlayerToBan, 0x808080FF, Msg);
         }
         else
         {
            format(Msg, 128, \"Bannolva lettél %s által %i napra és %i órára.\", AdminName, Days, Hours);
            SendClientMessage(PlayerToBan, 0x808080FF, Msg);
            format(Msg, 128, \"Oka: %s\", Reason);
            SendClientMessage(PlayerToBan, 0x808080FF, Msg);
            format(Msg, 128, \"Ez volt az %i ban, 5.-re örökre repülsz.\", APlayerData[PlayerToBan][bans]);
            SendClientMessage(PlayerToBan, 0x808080FF, Msg);
         }
         // Kick the player (his data will be saved)
         Kick(PlayerToBan);
         // Inform everybody else which player was banned and for how long
         format(Msg, 128, \"[%s] %s bannolta %s játékost %i napra és %i órára.\", AdminLevelName[APlayerData[playerid][PlayerLevel]], AdminName, Name, Days, Hours);
         SendClientMessageToAll(0x808080FF, Msg);
      }
   }
}
else
    return 0;
}
else
    return 0;
return 1;
}

 
kick:
 
COMMAND:kick(playerid, params[])
{
new PlayerToKick, Reason[128], ReasonMsg[128], Name[24];
// Send the command to all admins so they can see it
SendAdminText(playerid, \"/kick\", params);
// Check if the player has logged in
if (APlayerData[playerid][LoggedIn] == true)
{
// Check if the player\'s admin-level is at least 1
if (APlayerData[playerid][PlayerLevel] >= 1)
{
   if (sscanf(params, \"us[128]\", PlayerToKick, Reason)) SendClientMessage(playerid, 0xFF0000AA, \"Használat: \\\"/kick <név/ID> <Oka>\\\"\");
   else
      if (IsPlayerConnected(PlayerToKick)) // If the player is a valid playerid (he\'s connected)
      {
         // Get the name of the player who warned the player
         GetPlayerName(playerid, Name, sizeof(Name));
         // Send the warned player a message who kicked him and why he\'s been kicked
         format(ReasonMsg, 128, \"Kickelve lettél [%s] %s által.\", AdminLevelName[APlayerData[playerid][PlayerLevel]], Name);
         SendClientMessage(PlayerToKick, 0xFF0000FF, ReasonMsg);
         format(ReasonMsg, 128, \"Oka: %s\", Reason);
         SendClientMessage(PlayerToKick, 0xFF0000FF, ReasonMsg);
         // Kick the player
                  Kick(PlayerToKick);
      }
      else
          SendClientMessage(playerid, 0xFF0000FF, \"Nincs ilyen játékos online.\");
}
else
    return 0;
}
else
    return 0;
// Let the server know that this was a valid command
return 1;
}

Nem elérhető mefi88

  • 312
    • Profil megtekintése
ban
« Válasz #9 Dátum: 2014. március 21. - 14:38:31 »
0 Show voters
Öhm, most lehet, hogy én vagyok fáradt, de benne van a kódban a kért dolog, nem!? :doubt:
SendClientMessage funkció felel ezért a dologért, ami ott csücsül a bemásolt kódban.

Nem elérhető ZSOLTI99

  • 1827
    • Profil megtekintése
ban
« Válasz #10 Dátum: 2014. március 21. - 14:39:57 »
0 Show voters
http://wiki.sa-mp.com/wiki/Kick 0.3z nem mükszik a kicknék az üzenet küldés de timer segítségével ki lehet javítani

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
ban
« Válasz #11 Dátum: 2014. március 21. - 14:53:31 »
0 Show voters
Ahogyan a Wikiben is áll: a Kick() függvény elõtt semelyik másik, a player számára eljuttatandó dolog nem jut el a playerig, pl. a SendClientMessage üzenetét sem látja a játékos, ugyanis kirúgja õt a rendszer, mielõtt még meglátná az üzenetet.
 
Important Note: 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.[/quote]
ZSOLTI99, nem 0.3z-tõl \"nem mükszik\", hanem a többi verziónál is így volt. Valamint nem \"nem mükszik\", hanem egyszerûen gyorsabban lesz kirúgva a játékos, minthogy ahhoz eljutni a SendClientMessage függvény által elküldött üzenet, vagy bármi más, számára alapesetben látszódó dolog. Tehát mûködni mûködik. Ahogyan az \"üzenet küldés\" is.
A megoldás rá az, hogy egy timerrel késleleted a Kick() függvényt. Talán egy 100 ezredmásodpercre beállított, nem ismétlõdõ timer is elég hozzá, nem kell több idõt várni. Vagy ha igen, picit megemeled mondjuk 200-ra, de szerintem már 0,1 mp-s timerrel is jó lesz a dolog.

ban
« Válasz #12 Dátum: 2014. március 21. - 15:09:14 »
0 Show voters
Ezt amit mondtál bele tudnád nekem írni
Üdv
Hero

Nem elérhető ZSOLTI99

  • 1827
    • Profil megtekintése
ban
« Válasz #13 Dátum: 2014. március 21. - 15:29:54 »
0 Show voters
Idézetet írta: Dfoglalo date=1395410011\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"47270\" data-ipsquote-contentclass=\"forums_Topic
Ahogyan a Wikiben is áll: a Kick() függvény elõtt semelyik másik, a player számára eljuttatandó dolog nem jut el a playerig, pl. a SendClientMessage üzenetét sem látja a játékos, ugyanis kirúgja õt a rendszer, mielõtt még meglátná az üzenetet.
 
Important Note: 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.
ZSOLTI99, nem 0.3z-tõl \"nem mükszik\", hanem a többi verziónál is így volt. Valamint nem \"nem mükszik\", hanem egyszerûen gyorsabban lesz kirúgva a játékos, minthogy ahhoz eljutni a SendClientMessage függvény által elküldött üzenet, vagy bármi más, számára alapesetben látszódó dolog. Tehát mûködni mûködik. Ahogyan az \"üzenet küldés\" is.
A megoldás rá az, hogy egy timerrel késleleted a Kick() függvényt. Talán egy 100 ezredmásodpercre beállított, nem ismétlõdõ timer is elég hozzá, nem kell több idõt várni. Vagy ha igen, picit megemeled mondjuk 200-ra, de szerintem már 0,1 mp-s timerrel is jó lesz a dolog.
 
[/quote]
Én teszteltem az ilyen dolgot és 0.3e verzión mûködött rendesen

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
ban
« Válasz #14 Dátum: 2014. március 21. - 15:32:05 »
0 Show voters
A Kick-eknél, pl.: a
 
Kick(PlayerToKick);

 
-nél a \"Kick\" feliratot írd át \"KickEx\"-re, pl.:
 
KickEx(PlayerToKick);

 
majd valahová a callbackokon kívülre, pl. a mód legvégére tedd be a következõ forráskódot, melyet most gyorsan megírtam neked:
 
stock KickEx(playerid)
{
    SetTimerEx(\"KickExTimer\", 100, false, \"i\", playerid);
}
forward KickExTimer(playerid);
public KickExTimer(playerid)
{
    Kick(playerid);
}

 
De egyébként ugyanezzel a forráskóddal csinálhatod azt is, hogy a
 
KickEx()

 
helyett
 
SetTimerEx(\"KickExTimer\", 100, false, \"i\", playerid);

 
-t használsz, de így custom függvényként sokkal rövidebb a dolog, szóval szerintem csináld úgy, ahogy leírtam.


ZSOLTI99, akkor te valami mást csinálhattál, ugyanis ott sem mûködik rendesen. :) Vagyis rendesen mûködik, mindenhol, itt is. Ugyanis az a rendes mûködés, ha a játékost kirúgja a függvény, úgy, hogy az elõtte lévõ dolgok lefutnak, de nem jutnak el a playerhez, aki így pl. a SendClientMessage függvény által küldött üzenetet sem tudja majd elolvasni.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal