Aquн estб, tiene arreglado algunos bug menores y ahora los comandos usan zcmd, tambien tiene la opcion para eliminar, tu puedes seguirlo editando por que ya practicamente te hise un fs xD (al mio le voy a poner la opcion de mandar mensajes privados, tu tambien puedes intentarlo).
pawn Код:
#include <a_samp>
#include <zcmd>
#define COLOR_YELLOW 0xFFFF00AA
#if !defined isnull
#define isnull(%1) \
((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
#endif
new DB:DB_NAMES;
public OnFilterScriptInit() {
DB_NAMES = db_open("DB_Nombres.db");
db_query(DB_NAMES,
"CREATE TABLE IF NOT EXISTS `NOMBRES` (`ID` INTEGER PRIMARY KEY AUTOINCREMENT,`NOMBRE` TEXT,`CONTACTO` TEXT)");
}
public OnPlayerConnect(playerid) {
new
time = GetTickCount(),
name[MAX_PLAYER_NAME],
DBResult:result,
count,
string[128];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"SELECT `NOMBRE` FROM `NOMBRES` WHERE `CONTACTO` = '%s'",name);
result = db_query(DB_NAMES,string);
count = db_num_rows(result);
if(count > 0) {
new
p,
tmp_name[MAX_PLAYER_NAME],
result_string[64],
max_players = GetMaxPlayers();
format(string,sizeof(string)," %s (ID: %d) se ha conectado al servidor",name,playerid);
for(new i = 0; i < count; i++) {
db_get_field_assoc(result,"NOMBRE",result_string,sizeof(result_string));
for(p = 0; p < max_players; p++) {
if(IsPlayerConnected(p)) {
GetPlayerName(p,tmp_name,sizeof(tmp_name));
if(!strcmp(tmp_name,result_string)) {
SendClientMessage(p,COLOR_YELLOW,string);
}
}
}
}
}
db_free_result(result);
printf("OnPlayerConnect Tardу %d milisegundos",GetTickCount()-time);
return 0;
}
CMD:agregar(playerid,params[]) {
if(isnull(params)) {
SendClientMessage(playerid,COLOR_YELLOW,"** Utiliza /agregar [playerid]");
return 1;
}
new len = strlen(params);
for(new i = 0; i < len; i++) {
switch(params[i]) {
case '0'..'9':
continue;
default: {
SendClientMessage(playerid,COLOR_YELLOW,"** El ID debe ser nъmerico");
return 1;
}
}
}
new id = strval(params);
/*
if(id == playerid) {
SendClientMessage(playerid,YELLOW,"** No puedes aсadirte tu mismo a tu lista de contactos");
return 1;
}
*/
if(!IsPlayerConnected(id)) {
SendClientMessage(playerid,COLOR_YELLOW,"** El jugador no estб conectado");
return 1;
}
new
name[2][MAX_PLAYER_NAME],
string[128],
DBResult:result,
count;
GetPlayerName(playerid,name[0],sizeof(name[]));
GetPlayerName(id, name[1],sizeof(name[]));
format(string,sizeof(string),"SELECT * FROM `NOMBRES` WHERE `NOMBRE` = '%s' AND `CONTACTO` = '%s' LIMIT 1",name[0],name[1]);
result = db_query(DB_NAMES,string);
count = db_num_rows(result);
db_free_result(result);
if(count > 0) {
format(string,sizeof(string),"** El jugador %s (ID:%d) ya estб en la lista de tus contactos",name[1]);
SendClientMessage(playerid,COLOR_YELLOW,string);
return 1;
}
db_query(DB_NAMES,"PRAGMA synchronous=OFF");
format(string,sizeof(string),"INSERT INTO `NOMBRES` (NOMBRE,CONTACTO) VALUES ('%s','%s')",name[0],name[1]);
if(db_query(DB_NAMES,string)) {
format(string,sizeof(string),"Agregastes a %s (ID:%d) a tu lista de contactos",name[1],id);
SendClientMessage(playerid,COLOR_YELLOW,string);
format(string,sizeof(string),"** %s (ID:%d) te ha agregado a su lista de contactos",name[0],playerid);
SendClientMessage(id,COLOR_YELLOW,string);
}
else {
SendClientMessage(playerid,COLOR_YELLOW,"** No se pudo agregar al jugador a lista (Error interno del servidor)");
}
db_query(DB_NAMES,"PRAGMA synchronous=ON");
return 1;
}
CMD:lista(playerid,params[]) {
new
string[768],
name[MAX_PLAYER_NAME],
DBResult:result,
count;
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"SELECT `CONTACTO` FROM `NOMBRES` WHERE NOMBRE = '%s'",name);
result = db_query(DB_NAMES,string);
count = db_num_rows(result);
if(count > 0) {
new
result_string[64],
i = 0;
string[0] = '\0';
for( ; i < count; i++) {
db_get_field_assoc(result,"CONTACTO",result_string,sizeof(result_string));
format(result_string,sizeof(result_string),"%s\n",result_string);
strcat(string,result_string);
db_next_row(result);
}
SetPVarString(playerid,"V_CONTACTOS",string);
format(result_string,sizeof(result_string),"%d %s",i, i > 1 ? ("Amigos agregados"):("Amigo agregado"));
ShowPlayerDialog(playerid,1221,DIALOG_STYLE_LIST,result_string,string,"Aceptar","Eliminar");
}
else {
ShowPlayerDialog(playerid,1221,DIALOG_STYLE_LIST,"0 Amigios agregados","No has agregado a ningun contacto","Aceptar","");
}
db_free_result(result);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1221)
{
if(!response) {
new string[768];
GetPVarString(playerid,"V_CONTACTOS",string,sizeof(string));
if(isnull(string))
return 1;
new
len = strlen(string),
name[2][MAX_PLAYER_NAME],
list = 0,
l_index = 0;
for(new index=0; index < len; index++) {
if(string[index] == '\n') {
if(list == listitem) {
strmid(name[1],string,l_index,index);
break;
}
l_index = index+1;
list++;
}
}
GetPlayerName(playerid,name[0],sizeof(name[]));
format(string,sizeof(string),"DELETE FROM `NOMBRES` WHERE `NOMBRE` = '%s' AND `CONTACTO` = '%s'",name[0],name[1]);
if(db_query(DB_NAMES,string)) {
format(string,sizeof(string),"El nombre %s fue eliminado de tus contactos",name[1]);
SendClientMessage(playerid,COLOR_YELLOW,string);
}
else {
format(string,sizeof(string),"** Error no se puede eliminar el nombre %s",name[1]);
SendClientMessage(playerid,COLOR_YELLOW,string);
}
DeletePVar(playerid,"V_CONTACTOS");
}
}
return 0;
}