Jump to content
  • 0

pomoc Padá server


E1r2i3k4

Dotaz

Čaute všetci.. v mojom gamemode mam jeden príkaz, ktorým môžem označiť hráča nejakého, ale keď to napíšem tam sa vypne server.. tu je kód:
 

dcmd_p(playerid, params [])
{
        new id, text;
 
if(sscanf(params,"is", id, text)) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Použi: /p [ ID ] [TEXT ]");
else if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Hráč zo zadaným ID nieje na serveri !");
else if(IsPlayerNPC(id)) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ]{ffffff} Tohle je NPC !");
else
{
new Name[26];
new Name2[26];
GetPlayerName(playerid,Name,26);
GetPlayerName(id,Name2,26);
new string[128];
format(string,128,"{ACFF00}%s {FFFFFF}-> {00FFFF}%s {FFFFFF}%s", Name2, Name, text);
SendClientMessageToAll(COLOR_ADMIN,string);
for(new i=0; i<128; i++)
{
if(Player[playerid][AdminLevel] == 0)
{
    new string3[50];
format(string3, sizeof(string3),"%s cmdtext: /p %d %s", Name, id, text);
SCMTAdmins(i, 0xFF0000FF, string3);
}
}
}
return 1;
}
Link to comment
Share on other sites

6 odpovědí na tuto otázku

Recommended Posts

  • 0

Mě osobně to nepadá. Ale druhý parametr (string) mi to vyhodnotí jako id, když je to kratší (Tohle není NPC). Když je delší, server: unknown command.

sscanf také píše do server logu. 

sscanf warning: Strings without a length are deprecated, please add a destination size.

To znamená že musíš odesílat velikost - malá úprava

dcmd_p(playerid, params []) {
new id, text[128];
if(sscanf(params,"is[128]", id, text)) return SendClientMessage(playerid,COLOR_WARNING,"[ ! ] {FFFFFF}Použi: /p [ ID ] [TEXT ]");
else if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_WARNING,"[ ! ] {FFFFFF}Hráč zo zadaným ID nieje na serveri !");
else if(IsPlayerNPC(id)) return SendClientMessage(playerid,COLOR_WARNING,"[ ! ]{ffffff} Tohle je NPC !");
else {
     new Name[26];
     new Name2[26];
     GetPlayerName(playerid,Name,26);
     GetPlayerName(id,Name2,26);
     new string[128];
     format(string,128,"{ACFF00}%s {FFFFFF}-> {00FFFF}%s {FFFFFF}%s", Name2, Name, text);
     SendClientMessageToAll(COLOR_ADMIN,string);
     for(new i=0; i<128; i++){
          if(Player[playerid][AdminLevel] == 0) {
               new string3[50];
               format(string3, sizeof(string3),"%s cmdtext: /p %d %s", Name, id, text);
               SCMTAdmins(i, 0xFF0000FF, string3);
          }
     }
}
return 1;
}

new id, text[128];
if(sscanf(params,"is[128]", id, text)) ...

 

Tím pádem funguje. Nebo také bude potřeba si pořídit originální a co nejnovější sscanf.

+ cyklus, nedává smysl + na jména je nejlepší si vytvořit funkci, která ti ty jména vrací a šupat to rovnou do formatu

Link to comment
Share on other sites

  • 0
  • Globální moderátor
new string3[50];
format(string3, sizeof(string3),"%s cmdtext: /p %d %s", Name, id, text);
 
řekl bych trochu malý string ... ;) ale nemyslím si že to bude tím 
 
další
 
for(new i=0; i<128; i++) // je promka MAX_PLAYERS nebo vlastní MAY_PLAYERS_EX
{
if(Player[playerid][AdminLevel] == 0) //odesílá se těm kteří mají al 0 jen tak mimochodem 

 

 

a pro zjištění kde to padá si to loguj ať víš kdy přesně ;)

Link to comment
Share on other sites

  • 0
dcmd_p(playerid, params [])
{
new id, text[256];//text je string

if(sscanf(params,"is", id, text)) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Použi: /p [ ID ] [TEXT ]");
//tady to nvm jiste sscanf nepouživám ale nemá tam být if(!sscanf(params,"is", id, text))
else if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ] {FFFFFF}Hráč zo zadaným ID nieje na serveri !");
else if(IsPlayerNPC(id)) return SendClientMessage(playerid,COLOR_WARNING,"[  !  ]{ffffff} Tohle je NPC !");
// else chyba je tu v tomto else

new Name[26];
new Name2[26];
GetPlayerName(playerid,Name,26);
GetPlayerName(id,Name2,26);
new string[300];//malý string
format(string,sizeof(string),"{ACFF00}%s {FFFFFF}-> {00FFFF}%s {FFFFFF}%s", Name2, Name, text);
SendClientMessageToAll(COLOR_ADMIN,string);//nvm k čemu to je ale jestli je to něco jako SZ tak je blbost SendClientMessageToAll
for(new i=0; i<128; i++)
{
if(Player[i][AdminLevel] != 0)//tady musíš mít != a ne == , a ne playerid ale i
{
new string3[300];//Malý string
format(string3, sizeof(string3),"%s cmdtext: /p %d %s", Name, id, text);
SCMTAdmins(i, 0xFF0000FF, string3);
}
}

return 1;
}
// a to jeasi tak vše

a udělal bych si stock

stock SCMToAllAdmins(color,text[])
{
for(new i=0; i<128; i++)
{
if(Player[i][AdminLevel] != 0) SendClientMessage(i,color,text);
}
return 1;
}
Edited by play
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...