Доброе время суток, у меня возникли пару вопросов по поводу kv. 1. Когда используется KvGetNum нужно ли после этого закрывать. (CloseHandle(kv)) 2. И вообще когда нужно закрывать CloseHandle(kv). Ибо после написание скрипта у меня в логах.
L 12/05/2015 - 23:56:04: SourceMod error session started L 12/05/2015 - 23:56:04: Info (map "$2000$") (file "errors_20151205.log") L 12/05/2015 - 23:56:04: [SM] Native "KvGetNum" reported: Invalid key value handle 0 (error 4) L 12/05/2015 - 23:56:04: [SM] Displaying call stack trace for plugin "gifts.smx": L 12/05/2015 - 23:56:04: [SM] [0] Line 145, accounts.sp::Accounts() L 12/05/2015 - 23:56:04: [SM] [1] Line 87, accounts.sp::OnPlayerSpawn() L 12/05/2015 - 23:56:10: [SM] Native "KvGetNum" reported: Invalid key value handle 0 (error 4) L 12/05/2015 - 23:56:10: [SM] Displaying call stack trace for plugin "gifts.smx": L 12/05/2015 - 23:56:10: [SM] [0] Line 145, accounts.sp::Accounts() L 12/05/2015 - 23:56:10: [SM] [1] Line 87, accounts.sp::OnPlayerSpawn() L 12/06/2015 - 00:03:01: Error log file session closed.
Если kv глобальное, то закрывать не нужно вовсе. Если kv в блоке, то в конце функций связанных с kv. int iEnable = KvGetNum( kv, "god" ); А в kv: "god" "1" if( iEnable )
Сообщение отредактировал dases2003 - Воскресенье, 06.12.2015, 06:21:56
У меня идет глобальная kv, то есть закрывать нужно только после того как я использую KvGetNum или KvSetNum? а вот CreateKeyValues, его нужно только туда где запись KvSetNum или же и там где идет получение информации?
Вот допустим пример:
new Handle:kv = INVALID_HANDLE; new Gifts[MAXPLAYERS + 1];
public OnClientConnected(client) { Gifts[client] = KvGetNum(kv, "Gifts", 1); }
public Action:OnPlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) { new client = GetClientOfUserId(GetEventInt(event, "userid")); if (GetClientTeam(client) == 2 || GetClientTeam(client) == 3) { decl String: gif[32]; Func_GetGift(client, gif, sizeof(gif)); PrintToChat(client, "Вы получили %s", gif); } }