Tenho que usar o CMD duas vezes para carregar -
binnyl - 28.01.2018
Eu tenho esse sistema de criar empresa ingame, eu mesmo fiz, com ajuda do @Marllun
Ele funciona, se eu criar a empresa duas vezes, eu dou /makebizz 1 30 Teste1
Nada acontece, mas se eu dou um /makebizz 1 30 Teste2
Ele cria a empresa na posiзгo que eu fiz o Teste1 com o nome Teste1
O que tem de errado?
Код:
CMD:makebizz(playerid, params[]) {
new bizzid, name[30], type;
if(sscanf(params,"iis[30]", bizzid, type, name)) return SendClientMessage(playerid, -1, "Use: /makebizz [id] [type] [name]");
if(bizzid < 1 && bizzid > MAX_BIZZ) return SendClientMessage(playerid, -1, "Choose a number between 1-MAX_BIZZ");
if(strlen(name) > 30) return SendClientMessage(playerid, -1, "The name can not have more then 30 caracters");
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
BizzInfo[bizzid][bizzX] = x;
BizzInfo[bizzid][bizzY] = y;
BizzInfo[bizzid][bizzZ] = z;
BizzInfo[bizzid][bizzName] = name;
BizzInfo[bizzid][bizzType] = type;
BizzInfo[bizzid][bizzID] = bizzid;
new query[1030];
mysql_format(ConnectMYSQL, query, sizeof(query), "UPDATE `business` SET `bizzType` = '%d', `bizzX` = '%f', `bizzY` = '%f', `bizzZ` = '%f', `bizzName` = '%s', `bizzOWNER` = '%d' WHERE `bizzID` = '%i'",
BizzInfo[bizzid][bizzType],
BizzInfo[bizzid][bizzX],
BizzInfo[bizzid][bizzY],
BizzInfo[bizzid][bizzZ],
BizzInfo[bizzid][bizzName],
BizzInfo[bizzid][bizzOWNER],
bizzid);
mysql_pquery(ConnectMYSQL, query);
mysql_format(ConnectMYSQL, query, sizeof(query), "SELECT * FROM business WHERE bizzID = %d LIMIT 1", bizzid);
mysql_tquery(ConnectMYSQL, query, "Carregar_Business", "i", bizzid);
return 1;
}
forward Carregar_Business(bizzid);
public Carregar_Business(bizzid) {
new string[256], rows, fields;
cache_get_row_count(rows);
cache_get_field_count(fields);
if(rows) {
// ints
cache_get_value_int(0, "bizzID", BizzInfo[bizzid][bizzID]);
cache_get_value_int(0, "bizzType", BizzInfo[bizzid][bizzType]);
cache_get_value_int(0, "bizzOWNER", BizzInfo[bizzid][bizzOWNER]);
// floats
cache_get_value_float(0, "bizzX", BizzInfo[bizzid][bizzX]);
cache_get_value_float(0, "bizzY", BizzInfo[bizzid][bizzY]);
cache_get_value_float(0, "bizzZ", BizzInfo[bizzid][bizzZ]);
// strings
cache_get_value_name(0, "bizzName", BizzInfo[bizzid][bizzName], 30);
// pickup
if(BizzInfo[bizzid][bizzType] != 0) {
if(IsValidDynamicPickup(PickupBizz[bizzid])) DestroyDynamicPickup(PickupBizz[bizzid]);
if(IsValidDynamic3DTextLabel(Text3Dbizz[bizzid])) DestroyDynamic3DTextLabel(Text3Dbizz[bizzid]);
format(string, sizeof(string), "(BID:%i)%s.\nPress 'F' to enter.", BizzInfo[bizzid][bizzID], BizzInfo[bizzid][bizzName]);
Text3Dbizz[bizzid] = CreateDynamic3DTextLabel(string, 0xABDEACFF, BizzInfo[bizzid][bizzX], BizzInfo[bizzid][bizzY], BizzInfo[bizzid][bizzZ], 10.0);
PickupBizz[bizzid] = CreateDynamicPickup(1239, 1, BizzInfo[bizzid][bizzX], BizzInfo[bizzid][bizzY], BizzInfo[bizzid][bizzZ], -1);
return 1;
}
}
return 1;
}
Re: Tenho que usar o CMD duas vezes para carregar -
willttoonn - 29.01.2018
Amigгo, tecnicamente o que vocк estб fazendo й desnecessбrio. Vocк estб atualizando alguns dados da empresa no banco de dados, й desnecessбrio recarrega-la apуs essa atualizaзгo, tendo em vista que estes dados jб foram declarados nas variбveis que armazenam ela in-game.
Agora se vocк usa o
/makebiz para criar uma empresa, a funзгo toda estб errada comeзando pelo fato de nгo existir um INSERT no MYSQL, apenas um UPDATE.
O ideal pra criar algo no MYSQL й fazer assim:
- Crie um comando que adicione tudo nas variбveis.
- Insira uma query de insert e coloque ela pra ir para uma public criada por vocк, para que seja armazenado o
cache_insert_id() dentro de uma variбvel, no seu caso o
bizzID.
- Com o cache_insert_id() no
bizzID, crie uma function chamada Biz_Update ou Biz_Save e chame-a dentro da public que vocк criou e coloque os dados da empresa para serem enviados pro banco de dados usando o UPDATE e depois serem atualizadas no banco de dados.
- Nгo faзa nada de carregamento apуs isso, deixe o carregamento de dados acontecer dentro do GamemodeInit() do seu cуdigo.