[Ajuda] Trocar EXP de todos os players MYSQL
#1

Eu fiz algumas mudanзas no meu gamemode e para ser justo eu preciso resetar a exp dos players, em todos os players pegar seus niveis, e retornar um novo nivel = nivel / 2

Atй agora eu tentei fazer isso, mas alguma coisa estб errada, porque estou recebendo esses avisos de erros:

Code:
error 035: argument type mismatch (argument 2)
Na linha:
Code:
cache_get_value_int(0, nameOnTable, skillLVL);
Code:
CMD:reset(playerid, params[]) {
    if(admin[playerid] < 1337) return 0;
    if(admstatus[playerid] == 0) return SendClientMessage(playerid, -1, "You are in the player mode, you can not use this command! (use: /adminstats)");
    new skillselect[64], motivo[64];
    if(sscanf(params,"ss", skillselect, motivo)) {
        SendClientMessage(playerid, -1, "Use: /resetskill [skill-id] [reason]");
        return 1;
    }
    new skillLVL, userID, query[512], rows, fields, nameOnTable[64], strx[128];
    mysql_format(ConnectMYSQL, query, sizeof(query), "SELECT `experience`, `UserID` FROM `accounts`" );
    mysql_query(ConnectMYSQL,query);
    cache_get_row_count(rows);
    cache_get_field_count(fields);
    if(rows) {
        cache_get_value_int(0, "UserID", userID);
        if(!strcmp(skillselect, "lvl", true)) nameOnTable = "experience";          
        else if(!strcmp(skillselect, "respect", true)) nameOnTable = "respect";
        else if(!strcmp(skillselect, "pistol", true)) nameOnTable = "PISTOLskills";
        else if(!strcmp(skillselect, "shotgun", true)) nameOnTable = "SHOTGUNskills";
        else if(!strcmp(skillselect, "mp5", true)) nameOnTable = "MP5skills";
        else if(!strcmp(skillselect, "ak47", true)) nameOnTable = "AKskills";
        else if(!strcmp(skillselect, "m4", true)) nameOnTable = "M4skills";
        else if(!strcmp(skillselect, "rifle", true)) nameOnTable = "RIFLEskills";
        else if(!strcmp(skillselect, "sniper", true)) nameOnTable = "SNIPERskills";
        else if(!strcmp(skillselect, "minigun", true)) nameOnTable = "MINIGUNskills";
        cache_get_value_int(0, nameOnTable, skillLVL);
        skillLVL = skillLVL / 2;
        mysql_format(ConnectMYSQL, query, sizeof(query), "UPDATE `accounts` SET `%s` = '%d' WHERE `UserID` = '%d'",
            nameOnTable,
            skillLVL,
        userID);
    }
    format(strx,sizeof(strx),"AdmCmd: %s started a reset on SKILL %s. Reason: %s.", PlayerName(playerid), skillselect, (motivo));
    SendClientMessageToAll(COLOR_LIGHTRED, strx);
    writeLog("LOGS/resets.txt",strx);
    return 1;
}
Alguйm poderia me ajudar a fazer isso?
Reply
#2

Quote:

cache_get_value_int(0, "nome da coluna na tabela", skillLVL);

Como voce so quer resetar uma coluna nao precisa disso.

Basta executar a seguinte operaзao no seu SGBD:

Quote:

UPDATE nome_tabela SET nome_coluna = valor;

Reply
#3

Quote:
Originally Posted by PedroH
View Post
Como voce so quer resetar uma coluna nao precisa disso.

Basta executar a seguinte operaзao no seu SGBD:
Ai no caso ia setar todos pro mesmo valor, eu queria pegar o valor antigo e colocar um novo / 2
Tipo, se sua exp de respeito for 10, vira 5, se for 8 vira 4...
Reply
#4

tente.
cache_get_value_int(0, nameOnTable[0], skillLVL);
Reply
#5

Quote:
Originally Posted by binnyl
View Post
Ai no caso ia setar todos pro mesmo valor, eu queria pegar o valor antigo e colocar um novo / 2
Tipo, se sua exp de respeito for 10, vira 5, se for 8 vira 4...
UPDATE `tabela` SET respeito = respeito/2
Reply
#6

Quote:
Originally Posted by PedroH
View Post
UPDATE `tabela` SET respeito = respeito/2
exato, cuidado sу faзa esse comando uma vez! nгo uma vez por jogador. faзa direto pelo phpmyadmin se vc tiver acesso a ele. e faзa backup da database antes de alterar algo.
Reply
#7

Quote:
Originally Posted by PedroH
View Post
UPDATE `tabela` SET respeito = respeito/2
Cara, muito obrigado, te dei um +rep, executei essa query, e funcionou, mas me ajuda a fazer isso como um comando pro servidor?
Porque por comando nгo estб funcionando, olha como eu fiz:
PHP Code:
// reset skills:
CMD:reset(playeridparams[]) {
    if(
admin[playerid] < 1337) return 0;
    if(
admstatus[playerid] == 0) return SendClientMessage(playerid, -1"You are in the player mode, you can not use this command! (use: /adminstats)");
    new 
skillselect[64], motivo[64];
    if(
sscanf(params,"ss"skillselectmotivo)) {
        
SendClientMessage(playerid, -1"Use: /resetskill [skill-id] [reason]");
        return 
1;
    }
    new 
query[512], nameOnTable[64], strx[128];
    if(!
strcmp(skillselect"lvl"true)) nameOnTable "experience";          
    else if(!
strcmp(skillselect"respect"true)) nameOnTable "respect";
    else if(!
strcmp(skillselect"pistol"true)) nameOnTable "PISTOLskills";
    else if(!
strcmp(skillselect"shotgun"true)) nameOnTable "SHOTGUNskills";
    else if(!
strcmp(skillselect"mp5"true)) nameOnTable "MP5skills";
    else if(!
strcmp(skillselect"ak47"true)) nameOnTable "AKskills";
    else if(!
strcmp(skillselect"m4"true)) nameOnTable "M4skills";
    else if(!
strcmp(skillselect"rifle"true)) nameOnTable "RIFLEskills";
    else if(!
strcmp(skillselect"sniper"true)) nameOnTable "SNIPERskills";
    else if(!
strcmp(skillselect"minigun"true)) nameOnTable "MINIGUNskills";
    
mysql_format(ConnectMYSQLquerysizeof(query), "UPDATE `accounts` SET `%s` = `%s`/2",
        
nameOnTable,
        
nameOnTable
    
);
    
format(strx,sizeof(strx),"AdmCmd: %s started a reset on SKILL %s. Reason: %s."PlayerName(playerid), skillselect, (motivo));
    
SendClientMessageToAll(COLOR_LIGHTREDstrx);
    
writeLog("LOGS/resets.txt",strx);
    return 
1;

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)