Здарова всем. Хочу реализовать чтоб в стате указывалось сколько раз кто умер и сколько убил, к примеру /stats Кол-во убийств: n Кол-во Смертей: n. Не могу разобраться. Кто шарит помогите.
Кол-во смертей / Кол-во убийств
Сообщений 1 страница 30 из 30
Поделиться22014-09-09 19:48:28
Здарова всем. Хочу реализовать чтоб в стате указывалось сколько раз кто умер и сколько убил, к примеру /stats Кол-во убийств: n Кол-во Смертей: n. Не могу разобраться. Кто шарит помогите.
Создаешь массив/таблицу или что ты используешь для хранения данных игрока.
Пример:
Ко всем local
local Deads = array(getPlayerSlots(), 0); local Kills = array(getPlayerSlots(), 0);
При регистрации:
ini.setKey("PlayerInfo", "Deads", 0); ini.setKet("PlayerInfo", "Kills", 0);
При авторизации:
Deads[playerid] = ini.getKey("PlayerInfo", "Deads").tointeger();//Кол-во смертей Kills[playerid] = ini.getKey("PlayerInfo", "Kills");//Кол-во убийств
И при смерти добовляешь погибшему:
Deads[playerid] = Deads[playerid] +1;
А убийце
Kills[killerid] = Kills[killerid] +1;
Поделиться32014-09-09 19:51:18
При смерти добавлять куда понял, а вот убийце?
Поделиться42014-09-09 19:55:01
function onPlayerDeath(playerid, killerid, killervehicle) { if(killerid != INVALID_PLAYER_ID) sendMessageToAll("[FF0000FF]" + getPlayerName(playerid) + " [FFFFFFFF](" + playerid + ") was killed by [FFFF0000]" + getPlayerName(killerid) + " [FFFFFFFF](" + killerid + ").", color_info, true); Kills[killreid] = Kills[killerid] + 1; Deads[playerid] = Deads[playerid] + 1; } else { sendMessageToAll(getPlayerName(playerid) + " died"); Deads[playerid] = Deads[playerid] + 1; } return 1; } addEvent("playerDeath", onPlayerDeath);
P.S: Подделаешь под себя.
Отредактировано Vinste (2014-09-09 19:58:12)
Поделиться52014-09-09 20:56:12
Ошибка в строке
}
else - тут ошибка
{
C:\Users\Server\Desktop\MOD\scripts/cp.nut line = (2825) column = (14)
: error expression expected
Warning: Failed to load script cp.nut (Script does not exist/Script compilatio
n failed).
Отредактировано Leon (2014-09-09 21:05:56)
Поделиться62014-09-10 03:58:06
if(killerid != INVALID_PLAYER_ID) { sendMessageToAll("[FF0000FF]" + getPlayerName(playerid) + " Kills[killreid] = Kills[killerid] + 1; Deads[playerid] = Deads[playerid] + 1; } else { sendMessageToAll(getPlayerName(playerid) + " died"); Deads[playerid] = Deads[playerid] + 1; } return 1;
З.Ы: а самому додуматься никак, что скобку поставить надо?
Поделиться72014-09-10 10:30:07
Ну я новичок ещё. И на том спасибо.
Поделиться82014-09-10 10:37:19
Теперь такая проблема, кол-во пишется в игре отображается, а в акке значение ноль.
Поделиться92014-09-10 10:55:51
так измени кол-во. Или умри...
Поделиться102014-09-10 10:56:22
Так и делал . Умирал, значение менялось в игре, а значения акка 0.
Отредактировано Leon (2014-09-10 10:57:21)
Поделиться112014-09-10 11:16:54
Ты при дисконекте сохраняешь?
Поделиться122014-09-10 11:18:54
Что указывать сохранять в onPlayerDisconnect?
Отредактировано Leon (2014-09-10 11:19:53)
Поделиться132014-09-10 11:23:16
Если у тебя на EasyINI:
ini.setKey("Тут твоя секция", "Deads", Deads[playerid].tointeger()); ini.setKey("Тут твоя секция", "Kills", Kills[playerid].tointeger());
Поделиться142014-09-10 11:24:10
И это просто впихунть в onPlayerDisconnect?
З.Ы Впихнул безрезультатно.
Отредактировано Leon (2014-09-10 11:28:34)
Поделиться152014-09-10 11:31:30
Переделать под себя, свою секцию вписать и свои переменные, в которых ты хранишь убийста и смерти
Поделиться162014-09-10 11:34:37
Так вписано же все, в регистрации и авторизации, в акке есть эти разделы, что ещё нужно я так непонял..
function onPlayerDisconnect ( playerid, reason ) { if (reason == 0) sendMessageToAll(" '" + getPlayerName(playerid) + "'вышел", colorRed, true) else sendMessageToAll("[FFFFFFFF]'" + getPlayerName(playerid) + "' отключился **", colorRed, true); ini.setKey("General", "Deads", Deads[playerid].tointeger()); ini.setKey("General", "Kills", Kills[playerid].tointeger()); } addEvent("playerDisconnect", onPlayerDisconnect);
Отредактировано Leon (2014-09-10 11:35:29)
Поделиться172014-09-10 11:40:57
у тебя переменная ini не обьявлена!
Сделай так:
local ini = EasyINI("accounts/"+getPlayerName(playerid)+"");
Путь ставь свой
Отредактировано Vinste (2014-09-10 11:47:20)
Поделиться182014-09-10 11:50:30
Куда именно вставлять это? И нужно ли сохранение ini?
Поделиться192014-09-10 11:52:43
туда же. в плауерДисконект Если ты используешь БД, то сохранение ини не нужно, а если ты используешь на файлах, то надо
Поделиться202014-09-10 11:55:09
Ну у меня на файлах, акки записываются в папку по отдельности. Тобишь добавлять в дисконнект ini.saveData();?
Отредактировано Leon (2014-09-10 12:04:06)
Поделиться212014-09-10 12:23:32
Вот так?
local ini = EasyINI ("MOD/accounts/"+getPlayerName(playerid)+".ini"); { ini.setKey("General", "Deads", Deads[playerid].tointeger()); ini.setKey("General", "Kills", Kills[playerid].tointeger()); ini.saveData();
Поделиться222014-09-10 12:45:16
Да. ТОлько не забудь закрыть скобку
Поделиться232014-09-10 12:47:11
Это в дисконнет или в плеердеатч тоже?
Допустим у меня в файлах .ini акка 1 раздел
При смерти
[General]
Skin=1
Deads=0 - тут значение не меняет
Kills=0- и тут тоже когда убивает противник
Money=0
В игре значения в стате пишет, а в файлах нуль.
З.Ы То что сделали, я добавил без изменений, он же вообще не записывает в файл эти значения когда я умираю в игре, вот и считает с 0. Хотя все я сделал как описал ты сверху, я в принципе реализовывал это и раньше, но это тупиковая ситуация, когда в файл значение не пишет, не знаю даже что и делать..
Отредактировано Leon (2014-09-10 12:56:42)
Поделиться242014-09-10 13:19:18
Попробуй в onPlayerDeath поставить сохнанение в файл.
З.Ы У меня все работает именно по такому принципу, который описал выше. Клиент Т3
Поделиться252014-09-10 20:01:45
Возможно. У меня регистрация/авторизация на диалог системе, я не думаю что в этом причина.. Не знаю даже.
Отредактировано Leon (2014-09-10 20:02:29)
Поделиться262014-09-11 04:20:52
какую лснову используешь? илиже ты написал мод сам. я сам использую диалог систему. все работает норм
Поделиться272014-09-11 09:17:53
Пишу с нуля, до этого сохраняло когда система реги была на командах, а щас бредит, не пишет в файл данные, я уже подумываю проблема в EasyINI, хотя данные паролей он сохраняет и читает их успешно, что то тут не так..
Поделиться282014-09-11 09:55:44
чтов моде уже есть?
Поделиться292014-09-11 09:59:30
Ну пока ничего особенного, учусь только) Спидометр вот хочу реализовать стрелочный с пробегом, мозгую пока насчет фш как красиво все оформить.
Отредактировано Leon (2014-09-11 10:01:53)
Поделиться302014-09-11 10:32:12
По теме: проверил сейчас записывает данные через раз, незнаю с чем это могло быть связано, странно очень.