26.04.2017, 00:36
(
Последний раз редактировалось CarlCC; 26.04.2017 в 00:38.
Причина: [Falta de ortografia]
)
Buen dia, consulto por este medio una duda y apoyo de ser posible.
El problema es con un filterscript de un banco basico que he incoporado a un proyecto y es que al colocar /depositar [numero negativo ejemplo, -10000] el player adquiere 10000 y en su cuenta bancaria queda como -10000 y esto es un problema grave, intente buscar alguna funcion que bloque el simbolo negativo "-" pero no tuve suerte, espero alguien me pueda brindar apoyo, Gracias .
Aqui las lineas del codigo:
El problema es con un filterscript de un banco basico que he incoporado a un proyecto y es que al colocar /depositar [numero negativo ejemplo, -10000] el player adquiere 10000 y en su cuenta bancaria queda como -10000 y esto es un problema grave, intente buscar alguna funcion que bloque el simbolo negativo "-" pero no tuve suerte, espero alguien me pueda brindar apoyo, Gracias .
Aqui las lineas del codigo:
Код:
#define FILTERSCRIPT #include <a_samp> #include <zcmd> #include <dini> #include <streamer> #pragma tabsize 0 new archivo[256]; public OnFilterScriptInit() { print("|---------------------------------------|"); print("|---- Sistema de Banco Por Ghost202 ----|"); return 1; } public OnFilterScriptExit() { return 1; } CMD:depositar(playerid, params[]) { if(IsPlayerInRangeOfPoint(playerid,10,2312.7561,-8.1602,26.7422)) { new dinero, string[128]; if(sscanf(params, "d", dinero)) return SendClientMessage(playerid, 0xFFFFFFFF, "{2AC424}[BANCO] {FFFFFF}Usa {00D5FF}/depositar [cantidad]"); if(!sscanf(params, "d", dinero)) { if(GetPlayerMoney(playerid) < dinero) return SendClientMessage(playerid, 0xFFFFFFFF, "{2AC424}[BANCO] {FFFFFF}No tienes dinero para depositar"); if(GetPlayerMoney(playerid) >= dinero) { new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, sizeof(pname)); format(archivo, sizeof(archivo), "Banco/%s.txt", pname); if(dini_Exists(archivo)) { dini_IntSet(archivo, "Saldo", dini_Int(archivo, "Saldo") +dinero); } else if(!dini_Exists(archivo)) { dini_Create(archivo); dini_IntSet(archivo, "Saldo", dinero); } format(string, sizeof(string), "{2AC424}[BANCO] {FFFFFF}Depositaste {2AC424}%d{FFFFFF} Dolares ,Tu saldo actual es {2AC424}%d{FFFFFF} Dolares", dinero, dini_Int(archivo, "Saldo")); SendClientMessage(playerid, 0xFFFFFFFF, string); GivePlayerMoney(playerid, -dinero); } } } else return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}[ERROR] {FFFFFF}Debes de estar en un {00D5FF}ATM{FFFFFF} para usar este comando"); return 1; } CMD:retirar(playerid, params[]) { if(IsPlayerInRangeOfPoint(playerid,10,2312.7561,-8.1602,26.7422)) { new dinero, string[128]; if(sscanf(params, "d", dinero)) return SendClientMessage(playerid, 0xFFFFFFFF, "{2AC424}[BANCO] {FFFFFF}Usa {00D5FF}/retirar [cantidad]"); if(!sscanf(params, "d", dinero)) { new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, sizeof(pname)); format(archivo, sizeof(archivo), "Banco/%s.txt", pname); if(dini_Exists(archivo)) { if(dini_Int(archivo, "Saldo") < dinero) return SendClientMessage(playerid, 0xFFFFFFFF, "{2AC424}[BANCO] {FFFFFF}No tienes esa cantidad depositada en el banco"); else if(dini_Int(archivo, "Saldo") >= dinero) { GivePlayerMoney(playerid, dinero); dini_IntSet(archivo, "Saldo", dini_Int(archivo, "Saldo") -dinero); format(string, sizeof(string), "{2AC424}[BANCO] {FFFFFF}Retiraste {2AC424}%d{FFFFFF} Dolares, tu saldo actual es {2AC424}%d{FFFFFF} Dolares", dinero, dini_Int(archivo, "Saldo")); SendClientMessage(playerid, 0xFFFFFFFF, string); } } else if(!dini_Exists(archivo)) { SendClientMessage(playerid, 0xFFFFFFFF, "{2AC424}[BANCO] {FFFFFF}No tienes cuenta en el banco"); } } } else return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}[ERROR] {FFFFFF}Debes de estar en un {00D5FF}ATM{FFFFFF} para usar este comando"); return 1; } CMD:saldo(playerid, params[]) { if(IsPlayerInRangeOfPoint(playerid,10,2312.7561,-8.1602,26.7422)) { new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, sizeof(pname)); format(archivo, sizeof(archivo), "Banco/%s.txt", pname); if(dini_Exists(archivo)) { new string[128]; format(string, sizeof(string), "{2AC424}[BANCO] {FFFFFF}Tu saldo actual es {2AC424}%d{FFFFFF} Dolares", dini_Int(archivo, "Saldo")); SendClientMessage(playerid, 0xFFFFFFFF, string); } else if(!dini_Exists(archivo)) { SendClientMessage(playerid, 0xFFFFFFFF, "{2AC424}[BANCO] {FFFFFF}No tienes una cuenta en el banco"); } } else return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}[ERROR] {FFFFFF}Debes de estar en un {00D5FF}ATM{FFFFFF} para usar este comando"); return 1; } CMD:banco(playerid, params[]) { SendClientMessage(playerid, 0xFFFFFFFF, "{00D5FF}[INFO] {FFFFFF}Para usar estos comandos dirigente a un {00D5FF}ATM{FFFFFF y usa"); SendClientMessage(playerid, 0xFFFFFFFF, "/depositar [CANTIDAD] ,/retirar [CANTIDAD] o /saldo [CANTIDAD]"); return 1; } //------------------------------Sscanf----------------------------------------- stock sscanf(string[], format[], {Float,_}:...) { new formatPos = 0, stringPos = 0, paramPos = 2, paramCount = numargs(); while (paramPos < paramCount && string[stringPos]) { switch (format[formatPos++]) { case '\0': { return 0; } case 'i', 'd': { new neg = 1, num = 0, ch = string[stringPos]; if (ch == '-') { neg = -1; ch = string[++stringPos]; } do { stringPos++; if (ch >= '0' && ch <= '9') { num = (num * 10) + (ch - '0'); } else { return 1; } } while ((ch = string[stringPos]) && ch != ' '); setarg(paramPos, 0, num * neg); } case 'h', 'x': { new ch, num = 0; while ((ch = string[stringPos++])) { switch (ch) { case 'x', 'X': { num = 0; continue; } case '0' .. '9': { num = (num << 4) | (ch - '0'); } case 'a' .. 'f': { num = (num << 4) | (ch - ('a' - 10)); } case 'A' .. 'F': { num = (num << 4) | (ch - ('A' - 10)); } case ' ': { break; } default: { return 1; } } } setarg(paramPos, 0, num); } case 'c': { setarg(paramPos, 0, string[stringPos++]); } case 'f': { new tmp[25]; strmid(tmp, string, stringPos, stringPos+sizeof(tmp)-2); setarg(paramPos, 0, _:floatstr(tmp)); } case 's', 'z': { new i = 0, ch; if (format[formatPos]) { while ((ch = string[stringPos++]) && ch != ' ') { setarg(paramPos, i++, ch); } if (!i) return 1; } else { while ((ch = string[stringPos++])) { setarg(paramPos, i++, ch); } } stringPos--; setarg(paramPos, i, '\0'); } default: { continue; } } while (string[stringPos] && string[stringPos] != ' ') { stringPos++; } while (string[stringPos] == ' ') { stringPos++; } paramPos++; } while (format[formatPos] == 'z') formatPos++; return format[formatPos]; }