CMD:createclan(cmdid, playerid, params[])
{
if(!UserStats[playerid][Clan])
{
new clanname[32], query[300];
if(sscanf(params, "s[32]", clanname)) return SendClientMessage(playerid, COLOR_RED, "[USAGE]: /createclan [clanname]");
mysql_format(Database, query, sizeof(query), "SELECT * FROM `clans` WHERE `ClanName` = '%e'", clanname);
new Cache:result = mysql_query(Database, query);
if(cache_num_rows())
{
SendClientMessageEx(playerid, COLOR_RED, "[ERROR]: Clan name ''%s'' already exists. Pick another name.", clanname);
}
else
{
mysql_format(Database, query, sizeof(query), "INSERT INTO `clans` (`ClanName`, `ClanLeader`, `Official`) VALUES ('%e', '%e', '0')", clanname, GetName(playerid));
mysql_tquery(Database, query);
UserStats[playerid][Clan] = cache_insert_id();
new clanid = UserStats[playerid][Clan];
ClanInfo[clanid][ClanID] = clanid;
ClanInfo[clanid][ClanName] = clanname;
ClanInfo[clanid][ClanLeader] = GetName(playerid);
ClanInfo[clanid][Official] = 0;
cache_delete(result);
}
}
else
{
SendClientMessage(playerid, COLOR_RED, "[ERROR]: You already own a clan.");
}
return 1;
}
CMD:myclan(cmdid, playerid, params[])
{
if(!UserStats[playerid][Clan])
{
SendClientMessage(playerid, COLOR_WHITE, "You are not in a clan.");
}
else
{
SendClientMessageEx(playerid, COLOR_WHITE, "Your current clan ID is: %d", UserStats[playerid][Clan]);
}
return 1;
}
mysql_tquery(Database, query, "query_insertIntoClans", "d..", playerid);
forward query_insertIntoClans(playerid, ..);
public query_insertIntoClans(playerid, ..) {
UserStats[playerid][Clan] = cache_insert_id();
return 1;
}
What is `SendClientMessageEx`? The fact that it shows `0` in an `else` branch that just checked it wasn't 0 implies something else is going on.
|
mysql_format(Database, query, sizeof(query), "SELECT * FROM `clans` WHERE `ClanName` = '%e'", clanname);
mysql_format(Database, query, sizeof(query), "INSERT IGNORE INTO `clans` (`ClanName`, `ClanLeader`, `Official`) VALUES ('%e', '%e', '0')", clanname, GetName(playerid));
mysql_tquery(Database, query, "OnClanCreate", "ds", playerid, clanname);
forward OnClanCreate(playerid, clanname[]);
public OnClanCreate(playerid, clanname[])
{
if (cache_affected_rows())
{
new clanid = UserStats[playerid][Clan] = cache_insert_id();
...
}
else
{
SendClientMessageEx(playerid, COLOR_RED, "[ERROR]: Clan name ''%s'' already exists. Pick another name.", clanname);
}
}
ClanInfo[clanid][ClanName] = clanname;
ClanInfo[clanid][ClanLeader] = GetName(playerid);
forward OnClanCreate(playerid, clanname[]);
public OnClanCreate(playerid, clanname[])
{
if(cache_affected_rows())
{
new clanid = UserStats[playerid][Clan] = cache_insert_id();
ClanInfo[clanid][ClanID] = clanid;
ClanInfo[clanid][ClanName] = clanname;
ClanInfo[clanid][ClanLeader] = GetName(playerid);
ClanInfo[clanid][Official] = 0;
SendClientMessageEx(playerid, COLOR_RED, "[SUCCESS]: (Unofficial) Clan ID %d with the name %s has been created.", clanid, clanname);
}
else
{
SendClientMessageEx(playerid, COLOR_RED, "[ERROR]: Clan name ''%s'' already exists. Pick another name.", clanname);
}
return 1;
}
ClanInfo[clanid][ClanName] = clanname;
error 047: array sizes do not match, or destination array is too small
Do not copy strings directly like this:
pawn Код:
|
stock strcpy(dest[], const source[], maxlength=sizeof dest)
{
strcat((dest[0] = EOS, dest), source, maxlength);
}
forward OnClanCreate(playerid, clanname[]);
public OnClanCreate(playerid, clanname[])
{
if(cache_affected_rows())
{
new clanid = UserStats[playerid][Clan] = cache_insert_id();
ClanInfo[clanid][ClanID] = clanid;
strcpy(clanname, sizeof, clanname))
ClanInfo[clanid][ClanLeader] = GetName(playerid);
ClanInfo[clanid][Official] = 0;
SendClientMessageEx(playerid, COLOR_RED, "[SUCCESS]: (Unofficial) Clan ID %d with the name %s has been created.", clanid, clanname);
}
else
{
SendClientMessageEx(playerid, COLOR_RED, "[ERROR]: Clan name ''%s'' already exists. Pick another name.", clanname);
}
return 1;
}
strcpy(clanname, sizeof, clanname))
#if !defined strcpy
#define strcpy(%0,%1) strcat((%0[0] = '\0', %0), %1)
#endif
strcpy(ClanInfo[clanid][ClanName], clanname, 32);
Make it a macro:
pawn Код:
Second parameter is the source which is `clanname` Third parameter is the length which is optional unless it is an enum-array. pawn Код:
|