Саша Шеин
Кому костылей?
- Сообщения
- 1,697
- Реакции
- 621
Всем привет!
Вопрос №1:
Как это сделать для MySql:
SaveClient(client)
Вопрос №2:
Какой будет этот код для MySql:
OnClientLoad(client)
Вопрос №3:
Как воспроизвести звук (acegamer/pain/men/pain04.mp3) в радиусе от игрока и чем дальше тем тише.
Вопрос №4:
Почему не добавляет g_iCredits , g_iLevel , g_iExp ? Вроде всё правильно сделал.
P.S. Знаю что вопросы глупые и наверняка есть ответы в сети, но мне не понятно то что я нашёл в сети. :blush2: Помогите.
Вопрос №1:
Как это сделать для MySql:
SaveClient(client)
PHP:
SaveClient(client)
{
if (client && !IsFakeClient(client) && !IsClientSourceTV(client))
{
decl String:sQuery[250];
GetClientAuthString(client, sQuery, 32);
Format(sQuery, sizeof(sQuery), "UPDATE new_mod_table SET `exp` = '%d', `kills` = '%d', `deaths` = '%d', `level` = '%d',`credits` = '%d' WHERE `steamid`='%s' LIMIT 1",g_iExp[client],g_iKills[client],g_iDeaths[client],g_iLevel[client],g_iCredits[client], sQuery);
SQL_TQuery(g_hSQL, SQLT_OnClientSave, sQuery, GetClientUserId(client));
}
}
public SQLT_OnClientSave(Handle:hOwner, Handle:hQuery, const String:sError[], any:iUserId)
{
new iClient = GetClientOfUserId(iUserId);
if (!iClient)
{
return;
}
if (!hQuery)
{
LogError("SQLT_OnInsertClient: %s", sError);
}
g_bIsLoad[iClient] = false;
}
Вопрос №2:
Какой будет этот код для MySql:
OnClientLoad(client)
PHP:
OnClientLoad(client)
{
if (client && !IsFakeClient(client) && !IsClientSourceTV(client))
{
decl String:sQuery[250];
GetClientAuthString(client, sQuery, 32);
Format(sQuery, sizeof(sQuery), "SELECT `exp`, `kills`, `deaths`, `level`,`credits` FROM `new_mod_table` WHERE `steamid`='%s' LIMIT 1", sQuery);
SQL_TQuery(g_hSQL, SQLT_OnClientPutInServer, sQuery, GetClientUserId(client));
}
}
public SQLT_OnClientPutInServer(Handle:hOwner, Handle:hQuery, const String:sError[], any:iUserId)
{
new iClient = GetClientOfUserId(iUserId);
if (!iClient)
{
return;
}
if (!hQuery)
{
LogError("SQLT_OnClientPutInServer: %s", sError);
g_bIsLoad[iClient] = false;
}
if (SQL_FetchRow(hQuery))
{
g_iExp[iClient] = SQL_FetchInt(hQuery, 0);
g_iKills[iClient] = SQL_FetchInt(hQuery, 1);
g_iDeaths[iClient] = SQL_FetchInt(hQuery, 2);
g_iLevel[iClient] = SQL_FetchInt(hQuery, 3);
g_iCredits[iClient] = SQL_FetchInt(hQuery, 4);
g_bIsLoad[iClient] = true;
}
else
{
decl String:sQuery[250];
GetClientAuthString(iClient, sQuery, 32);
Format(sQuery, 650, "INSERT INTO `new_mod_table` (`exp`,`kills`,`deaths`,`level`,`credits`,`steamid`) VALUES (0,0,0,1,0,'%s')", sQuery);
SQL_TQuery(g_hSQL, SQLT_OnInsertClient, sQuery, GetClientUserId(iClient));
}
}
public SQLT_OnInsertClient(Handle:hOwner, Handle:hQuery, const String:sError[], any:iUserId)
{
new iClient = GetClientOfUserId(iUserId);
if (!iClient)
{
return;
}
if (!hQuery)
{
LogError("SQLT_OnInsertClient: %s", sError);
g_bIsLoad[iClient] = false;
}
g_bIsLoad[iClient] = true;
g_iExp[iClient] = g_iExpStart;
g_iKills[iClient] = 0;
g_iDeaths[iClient] = 0;
g_iLevel[iClient] = 1;
g_iCredits[iClient] = g_iCreditsStart;
}
Вопрос №3:
Как воспроизвести звук (acegamer/pain/men/pain04.mp3) в радиусе от игрока и чем дальше тем тише.
PHP:
new Float:pos_c[3], String:buf[256];
GetClientAbsOrigin(client, Float:pos_c);
for(new i=1;i<=MaxClients;i++)
{
if(IsClientInGame(i) && IsPlayerAlive(i))
EmitAmbientSound("acegamer/pain/men/pain04.mp3" , Float:pos_c, client, SNDLEVEL_CONVO );
}
Почему не добавляет g_iCredits , g_iLevel , g_iExp ? Вроде всё правильно сделал.
PHP:
/*
"userid" "short" // user ID who died
"attacker" "short" // user ID who killed
"weapon" "string" // weapon name killer used
"headshot" "bool" // signals a headshot
*/
public Action:EV_Death(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event,"userid")),
attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
if(client && attacker /*&& !IsFakeClient(client) && !IsFakeClient(attacker)*/)
{
new bHead = GetEventBool(event,"headshot");
g_iKills[attacker]++;
g_iDeaths[client]++;
g_iCredits[attacker]=g_iCredits[attacker]+((bHead)?g_iCreditsHead:g_iCreditsKill);
new newxp=g_iExp[attacker]+((bHead)?g_iExpHead:g_iExpKill);
if(newxp>=(g_iLevel[attacker]*g_iExpInc))
{
new newlevel=0;
new reqxp = g_iLevel[attacker]*g_iExpInc;
while(g_iExp[attacker]>reqxp)
{
newxp-=reqxp;
newlevel = g_iLevel[attacker] + 1;
}
// while(newxp<0)
// {
// g_iLevel[attacker]-=1;
// newxp=reqxp-g_iExpInc-newxp;
// }
g_iLevel[attacker] = newlevel;
g_iExp[attacker] = newxp;
PrintToChat(attacker,"[New Mod] Вы получили:");
PrintToChat(attacker,"Новый уровень %d",g_iLevel[attacker]);
PrintToChat(attacker,"Теперь у вас %d EXP",g_iExp[attacker]);
}
}
}
P.S. Знаю что вопросы глупые и наверняка есть ответы в сети, но мне не понятно то что я нашёл в сети. :blush2: Помогите.
Последнее редактирование: