23/06/2024 20:01
(Esta mensagem foi modificada pela última vez a: 23/06/2024 20:05 por White_Blue.)
(23/06/2024 17:46)Alfarr Heimrik Escreveu:(23/06/2024 12:20)White_Blue Escreveu: Não entendi o objetivo desse código. O que você quer fazer é quebrar a string caso for grande demais?
Como pode ver, eu estou usando esse sistema de tags-chat, eu queria saber se tem alguma forma de otimizar o código (diminuindo as linhas).
O sistema de ' quebra de linha ' foi algo que estava implementando, ai eu coloquei ele no post juntamente do código para que aquele que for me ajudar, me mostre como eu devo utilizar ele com o sistema de tag-chat mais otimizado.
Por exemplo: Tem como diminuir esse código? Parece até que estou programando java ... kkk
Código PHP:public OnPlayerText(playerid, text[])
{
new String[128], String2[128], Message[128];
if(strlen(text) > 75)
{
if(Player[playerid][pAdmin] == 0)
{
format(String2, sizeof String2, text[75]);
strdel(text, 75, 149);
format(String, sizeof(String), "%s[%d]: %s", pName(playerid), playerid, text);
ProxDetector(20.0, playerid, String, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY);
ProxDetector(20.0, playerid, String2, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY);
return 0;
}
if(Player[playerid][pAdmin] == 1)
{
format(String2, sizeof String2, text[75]);
strdel(text, 75, 149);
format(String, sizeof(String), "%s[%d]: %s", pName(playerid), playerid, text);
ProxDetector(20.0, playerid, String, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY);
ProxDetector(20.0, playerid, String2, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY);
return 0;
}
if(Player[playerid][pAdmin] == 2)
{
format(String2, sizeof String2, text[75]);
strdel(text, 75, 149);
format(String, sizeof(String), "%s[%d]: %s", pName(playerid), playerid, text);
ProxDetector(20.0, playerid, String, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY);
ProxDetector(20.0, playerid, String2, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY);
return 0;
}
if(Player[playerid][pAdmin] == 4)
{
format(String2, sizeof String2, text[75]);
strdel(text, 75, 149);
format(String, sizeof(String), "%s[%d]: %s", pName(playerid), playerid, text);
ProxDetector(20.0, playerid, String, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY);
ProxDetector(20.0, playerid, String2, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY);
return 0;
}
if(Player[playerid][pAdmin] == 5)
{
format(String2, sizeof String2, text[75]);
strdel(text, 75, 149);
format(String, sizeof(String), "%s[%d]: %s", pName(playerid), playerid, text);
ProxDetector(20.0, playerid, String, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY);
ProxDetector(20.0, playerid, String2, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY);
return 0;
}
if(Player[playerid][pAdmin] == 6)
{
format(String2, sizeof String2, text[75]);
strdel(text, 75, 149);
format(String, sizeof(String), "%s[%d]: %s", pName(playerid), playerid, text);
ProxDetector(20.0, playerid, String, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY);
ProxDetector(20.0, playerid, String2, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY);
return 0;
}
}
return 1;
}
Nesse tipo de verificação, é melhor utilizar a estrutura condicional switch do que blocos de ifs, pois é mais rápido e organizado. Além disso, não é necessário retornar 0 em cada verificação, basta retornar 0 no final da callback.
e.g
Código PHP:
public OnPlayerText(playerid, text[]) {
switch(Player[playerid][pAdmin]) {
case 1: {
// Código para level 1 de admin
}
// ...
default: {
// Caso nenhuma das condições dos cases acima forem satisfeitas (caso o jogador não for um admin por exemplo), pulará para a cláusula default
}
}
return 0; // Retorna 0 aqui para evitar duplicar as mensagens
}
Mais informações: https://www.est.ufmg.br/~cristianocs/Pac...ine0.2.3.8
Não estou disponível para realizar serviços relacionados ao SA-MP e não costumo responder a mensagens privadas, a menos que estejam relacionadas à moderação do fórum.