SA-MP Forums Archive
[FilterScript] 3D Info - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+----- Forum: Релизы/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=66)
+----- Thread: [FilterScript] 3D Info (/showthread.php?tid=289605)



3D Info - OKStyle - 12.10.2011

Ещё с версии 0.3b R2 я начал работу над этим скриптом и только сегодня пришла в голову отличная мысль и мне удалось его закончить в том виде, в котором он и планировался.



Данный скрипт позволяет rcon-админу видеть данные игрока через 3д-текст. Особенно красиво через спектакор.

Новые данные, которые могут понадобиться (здоровье тачки, оружие, ид или модель тачки) легко добавляются через редактирование скрипта.

Скачать:
http://pastebin.com/ie8srvyA

v1.1
* 1 3д-текст;
* 1 переменная для форматирования.

pawn Code:
#include <a_samp>
// 3D Info 1.1 by O.K.Style™
new PlayerText3D:Info[MAX_PLAYERS];
public OnPlayerStreamIn(playerid, forplayerid)
{
    if(!IsPlayerAdmin(forplayerid)) return 1;
    if(IsPlayerAdmin(playerid)) return 1;
    if(IsPlayerNPC(playerid)) return 1;
    Info[playerid] = CreatePlayer3DTextLabel(forplayerid, "Health: 0.0\nArmour: 0.0\nPing: 0\nFPS: 0\nMoney: 0", -1, 0.0, 0.0, 0.35, 30.0, playerid, INVALID_VEHICLE_ID, 0);
    return 1;
}
public OnPlayerUpdate(playerid)
{
    new Float:HP,Float:AP;
    GetPlayerHealth(playerid, HP);
    GetPlayerArmour(playerid, AP);
    new string_3D[256];
    format(string_3D, sizeof(string_3D), "{FFFFFF}Health: {FDE39D}%.0f\n{FFFFFF}Armour: {FDE39D}%.0f\n{FFFFFF}Ping: {FDE39D}%d\n{FFFFFF}FPS: {FDE39D}%d\n{FFFFFF}Money: {FDE39D}%d", HP, AP, GetPlayerPing(playerid), GetPlayerFPS(playerid), GetPlayerMoney(playerid));
    for(new i, j = GetMaxPlayers(); i != j; i++)
    {
        if(!IsPlayerConnected(i)) continue;
        if(IsPlayerNPC(i)) continue;
        if(!IsPlayerAdmin(i)) continue;
        if(IsPlayerAdmin(playerid)) continue;
        UpdatePlayer3DTextLabelText(i, Info[playerid], -1, string_3D);
    }
    return 1;
}
public OnPlayerStreamOut(playerid, forplayerid)
{
    if(IsPlayerNPC(playerid)) return 1;
    if(!IsPlayerAdmin(forplayerid)) return 1;
    if(IsPlayerAdmin(playerid)) return 1;
    for(new i; i < 6; i++) DeletePlayer3DTextLabel(forplayerid, Info[playerid]);
    return 1;
}
stock GetPlayerFPS(playerid)
{
    SetPVarInt(playerid, "DrunkL", GetPlayerDrunkLevel(playerid));
    if(GetPVarInt(playerid, "DrunkL") < 100) SetPlayerDrunkLevel(playerid, 2000);
    else
    {
        if(GetPVarInt(playerid, "LDrunkL") != GetPVarInt(playerid, "DrunkL"))
        {
            SetPVarInt(playerid, "FPS", (GetPVarInt(playerid, "LDrunkL") - GetPVarInt(playerid, "DrunkL")));
            SetPVarInt(playerid, "LDrunkL", GetPVarInt(playerid, "DrunkL"));
            if((GetPVarInt(playerid, "FPS") > 0) && (GetPVarInt(playerid, "FPS") < 256)) return GetPVarInt(playerid, "FPS") - 1;
        }
    }
    return 0;
}



Re: 3D Info - Jon_De - 12.10.2011

Quote:

public OnPlayerUpdate(playerid)
{
for(new i, j = GetMaxPlayers(); i != j; i++)
{

Не юзабельно, лишь для показухи так сказать, реальный сервер загнется


Re: 3D Info - OKStyle - 12.10.2011

Попробуй сначала, а потом выёживайся. Много кто говорит, что из-за использования OnPlayerUpdate всё загинается и т.п... Если руки кривые, то и без использования этого колбэка загнется.


Re: 3D Info - Mutha_X - 12.10.2011

Просто в этом мире много людей которые любят запускать обработку модели сворачивания белка на молекулярном уровне для 1кг вещества через OnPlayerUpdate, вот у тех и загибается)
... и у тех, кто с stream_rate = 1 xD

Вообще идея неплоха, но расстраивает факт, что на одного игрока приходится по 5 3дтекста, нельзя в 1 запихнуть?


Re: 3D Info - OKStyle - 12.10.2011

Можно =) Но мне было не до оптимизации...

EDIT: ну вот и обновил.