#include <a_samp>
#include <zcmd>
#include <sscanf2>
const DIALOG_MENU_PM = 1;
const DIALOG_SEND_PM = 2;
new
bool: blockPM [ MAX_PLAYERS ] [ MAX_PLAYERS ];
public OnPlayerClickPlayer ( playerid , clickedplayerid , source ) {
new
name [ MAX_PLAYER_NAME ],
str[ 100 ];
SetPVarInt ( playerid , "clickedplayerid" , clickedplayerid );
GetPlayerName( clickedplayerid , name , sizeof name );
format ( str , sizeof ( str ) , "Enviar PM para %s\nBloquear PM's de %s\nDesbloquear PM's de %s" , name , name , name );
ShowPlayerDialog ( playerid , DIALOG_MENU_PM , DIALOG_STYLE_LIST , "{FFFFFF}Menu: Mensagens Particulares" , str , "Selecionar", "Cancelar" );
return 1;
}
public OnDialogResponse ( playerid , dialogid , response , listitem , inputtext [ ] ) {
new
str [ 100 ],
name [ 24 ];
switch ( dialogid ) {
case DIALOG_MENU_PM: {
if ( !response ) {
SetPVarInt ( playerid , "clickedplayerid", INVALID_PLAYER_ID );
}
else {
switch ( listitem ) {
case 0: {
GetPlayerName ( GetPVarInt ( playerid , "clickedplayerid" ) , name , sizeof name );
format ( str , sizeof str , "{FFFFFF}Digite abaixo a mensagem a ser enviada para {0000FF}%s" , name );
ShowPlayerDialog ( playerid , DIALOG_SEND_PM , DIALOG_STYLE_INPUT , "{FFFFFF}Enviar mensagem particular" , str , "Enviar" , "Cancelar" );
}
case 1: {
format ( str , 4 , "%i" , GetPVarInt ( playerid , "clickedplayerid" ) );
cmd_blockpm ( playerid , str );
SetPVarInt ( playerid , "clickedplayerid", INVALID_PLAYER_ID );
}
case 2: {
format ( str , 4 , "%i" , GetPVarInt ( playerid , "clickedplayerid" ) );
cmd_desblockpm ( playerid , str );
SetPVarInt ( playerid , "clickedplayerid", INVALID_PLAYER_ID );
}
}
}
}
case DIALOG_SEND_PM: {
if ( !response ) {
SetPVarInt ( playerid , "clickedplayerid", INVALID_PLAYER_ID );
}
else {
format ( str , 100 , "%i %s" , GetPVarInt ( playerid , "clickedplayerid" ) , inputtext );
cmd_pm ( playerid , str );
SetPVarInt ( playerid , "clickedplayerid", INVALID_PLAYER_ID );
}
}
}
return 1;
}
CMD:pm( playerid , params [ ] ) {
new
playerID,
pmText [ 90 ],
str [ 128 ],
name [ 24 ];
if ( sscanf ( params , "us[90]" , playerID , pmText ) )
return SendClientMessage ( playerid , 0xFFFFFFFF , "Use /PM [ID/Nome] [Texto]" );
if ( !IsPlayerConnected ( playerID ) )
return SendClientMessage ( playerid , 0xFFFFFFFF , "Jogador inativo.");
if ( playerID == INVALID_PLAYER_ID )
return SendClientMessage ( playerid , 0xFFFFFFFF , "ID Invбlido." );
if ( blockPM [ playerID ] [ playerid ] )
return SendClientMessage ( playerid , 0xE31919FF , "Este jogador bloqueou mensagens particulares suas." );
GetPlayerName ( playerid , name , sizeof name );
format ( str , sizeof ( str ) , "PM de %s: %s" , name , pmText );
SendClientMessage ( playerID , 0xF6F600FF , str );
SendClientMessage ( playerid , 0xF6F600FF , "Mensagem particular enviada." );
return true;
}
CMD:blockpm ( playerid , params [ ] ) {
new
playerID,
str [ 90 ],
name [ 24 ];
if ( sscanf ( params , "u" , playerID ) )
return SendClientMessage ( playerid , 0xFFFFFFFF , "Use /blockpm [ID/Nome]" );
if ( !IsPlayerConnected ( playerID ) )
return SendClientMessage ( playerid , 0xFFFFFFFF , "Jogador inativo.");
if ( playerID == INVALID_PLAYER_ID )
return SendClientMessage ( playerid , 0xFFFFFFFF , "ID Invбlido." );
if ( blockPM [ playerid ] [ playerID ] )
return SendClientMessage ( playerid , 0xE31919FF , "Vocк jб bloqueou mensagens particulares deste jogador." );
blockPM [ playerid ] [ playerID ] = true;
GetPlayerName ( playerID , name , sizeof ( name ) );
format ( str , sizeof ( str ) , "Mensagens particulares de %s bloqueadas!" , name );
SendClientMessage ( playerid , 0x00CD00FF , str );
GetPlayerName ( playerid , name , sizeof ( name ) );
format ( str , sizeof ( str ) , "O jogador %s bloqueou suas mensagens particulares." , name );
SendClientMessage ( playerID , 0xE31919FF , str );
return 1;
}
CMD:desblockpm ( playerid , params [ ] ) {
new
playerID,
str [ 90 ],
name [ 24 ];
if ( sscanf ( params , "u" , playerID ) )
return SendClientMessage ( playerid , 0xFFFFFFFF , "Use /blockpm [ID/Nome]" );
if ( !IsPlayerConnected ( playerID ) )
return SendClientMessage ( playerid , 0xFFFFFFFF , "Jogador inativo.");
if ( playerID == INVALID_PLAYER_ID )
return SendClientMessage ( playerid , 0xFFFFFFFF , "ID Invбlido." );
if ( !blockPM [ playerid ] [ playerID ] )
return SendClientMessage ( playerid , 0xE31919FF , "Vocк nгo bloqueou mensagens particulares deste jogador." );
blockPM [ playerid ] [ playerID ] = false;
GetPlayerName ( playerID , name , sizeof ( name ) );
format ( str , sizeof ( str ) , "Mensagens particulares de %s desbloqueadas!" , name );
SendClientMessage ( playerid , 0x00CD00FF , str );
GetPlayerName ( playerid , name , sizeof ( name ) );
format ( str , sizeof ( str ) , "O jogador %s desbloqueou suas mensagens particulares." , name );
SendClientMessage ( playerID , 0xE31919FF , str );
return 1;
}
Уtimo filterscript.
Eu estava a desenvolver um do mesmo tipo, mas agora, hehe. |
public OnPlayerClickPlayer ( playerid , clickedplayerid , source ) {
//й igual а:
public_OnPlayerClickPlayer_(_playerid_,_clickedplayerid_,_source_)_{
Legal, mas vocк sabia que a cada espaзo que vocк utiliza no script equivale а um underline? " _ "
pawn Код:
Mas de qualquer forma, parabйns. |
Pois enganas-te redondamente jб sei que foste tu que inventaste isso pois tenho eu a certeza que o pre-processor elimina todos espaзos, entao vejamos ha pessoas que nao fazem identaзao com TAB mas sim com espaзos, nesse caso entao iria bugar porque primeiro iria por o underline antes das variaveis fazendo elas mudarem de nome e passarem assim a dar erros em certas partes do script segundo porque simplesmente ia meter um GM cheio de underlines? Isso nгo faz sentido nenhum...
Nгo percebo de onde voces vao buscar essas ideias... Mas sim й verdade que diminui o tamanho no .amx porйm voces e sim tou-me a direcionar aos brasileiros, tem quase todos a mania de pensar que o tamanho do AMX influencia na otimizaзгo do servidor porem nem sempre й verdade este й um dos casos.. |
Se eu estiver enganado, meu compilador estб com problemas sйrios.
Pois jб fiz um teste contra isso e deu no resultado que postei. Embora eu nгo esteja dizendo que o amx influencia na otimizaзгo, em alguns casos sim ele influencia em outros nгo. Foi apenas uma dica, as pessoas programam seus cуdigos do jeito que elas bem entenderem, nгo estou dizendo que sу por causa daquilo, ninguйm pode usar espaзos em seus scripts. Vocкs tem que saber diferenciar dica de obrigaзгo. Mas de qualquer forma, se eu ou vocк estiver certo, assunto encerrado. |
Nгo nгo isto nгo й assim assunto encerrado e tб a andar, diga-me lб como fez os seus testes para verificar isso pois tambйm quero testar...
|
Pois enganas-te redondamente jб sei que foste tu que inventaste isso pois tenho eu a certeza que o pre-processor elimina todos espaзos, entao vejamos ha pessoas que nao fazem identaзao com TAB mas sim com espaзos, nesse caso entao iria bugar porque primeiro iria por o underline antes das variaveis fazendo elas mudarem de nome e passarem assim a dar erros em certas partes do script segundo porque simplesmente ia meter um GM cheio de underlines? Isso nгo faz sentido nenhum.
Nгo percebo de onde voces vao buscar essas ideias... Mas sim й verdade que diminui o tamanho no .amx porйm voces e sim tou-me a direcionar aos brasileiros, tem quase todos a mania de pensar que o tamanho do AMX influencia na otimizaзгo do servidor porem nem sempre й verdade este й um dos casos.. |
Antes de falar dos brasileiros em geral acho melhor comeзar a medir suas palavras por que aqui temos leis contra discriminaзгo, seja ela por raca ou nacionalidade.
Vocк falar isso й a mesma coisa que eu falar que TODOS os portugueses sгo burros por causa de alguns q vieram aqui, desmataram tudo й nao replantaram nada. |