Skocz do zawartości

Rekomendowane odpowiedzi

Przed tłumaczeniem sprawdź czy plugin nie ma pliku *.phrases.txt odpowiadającego za tłumaczenie tekstów. Poradnik na temat tłumaczenia w pliku phrases.txt znajdziesz tutaj
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!.

 

 

W przypadku, gdy plugin nie posiada tego pliku, a wyświetla graczowi jakieś informacje, będzie go trzeba przetłumaczyć. Można to zrobić na dwa sposoby. Pierwszy, którego tutaj nie omówię, to przerobienie pluginu tak, by korzystał z pliku phrases.txt. Drugi, to na sztywno zmienienie fraz wyświetlanych w innym języku na frazy w naszym języku.

 

 

1. Plugin Informacje o Serwerze
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!. 

Linia 24: CPrintToChat(client, "{darkred}Server name :{default} %s", sBuffer)
Linia 37: CPrintToChat(client, "{darkred}Server IP: {default}%d.%d.%d.%d:%d", pieces[0], pieces[1], pieces[2], pieces[3], port)
Linia 72: CPrintToChat(client, "{DarkRed}Timeleft:{default} %s", sBuffer)

Interesują nas zaznaczone na kolorowo frazy zamieszczone w cytacie. Wynik końcowy będzie następujący:

Linia 24: CPrintToChat(client, "{darkred}Nazwa serwera :{default} %s", sBuffer)
Linia 37: CPrintToChat(client, "{darkred}IP serwera: {default}%d.%d.%d.%d:%d", pieces[0], pieces[1], pieces[2], pieces[3], port)
Linia 72: CPrintToChat(client, "{DarkRed}Czas do końca mapy:{default} %s", sBuffer)

Jak można zauważyć, zmieniły się tylko angielskie wyrazy. Specjalne znaki takie jak {darkred} czy %d zostawiamy w spokoju, są to informacje potrzebne pluginowi w jaki sposób ma wyświetlić wiadomość. Po zmianach plik zapisujemy kompilujemy i wrzucamy na serwer

 

 

2. Plugin Block sm plugins
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

Linia 34:  SetFailState("Failed to find offset for ClientPrintf");
Linia 133: PrintToConsole(client, "\t\tNo chance\n");

Linia 75:  BuildPath(Path_SM, g_sLogs, sizeof(g_sLogs), "logs/sbp-%s.log", sDate);
Linia 95:  else if(StrContains(sBuffer, "To see more, type \"sm plugins") != -1)

Robimy właściwie to samo, uważając na znaki specjalne \t. Natomiast w liniach 75 oraz 95 NIC nie tłumaczymy! Musimy uważać tłumacząc w ten sposób pluginy, gdyż niekiedy angielski tekst w cytatach nie wyświetla się użytkownikom a jego zmiana może spowodować zepsucie pluginu! Wynik końcowy:

Linia 34:  SetFailState("Nie znaleziono offsetu dla ClientPrintf");
Linia 133: PrintToConsole(client, "\t\tBrak szans\n");

Linia 75:  BuildPath(Path_SM, g_sLogs, sizeof(g_sLogs), "logs/sbp-%s.log", sDate);
Linia 95:  else if(StrContains(sBuffer, "To see more, type \"sm plugins") != -1)

Plik zapisujemy, kompilujemy i wrzucamy na serwer

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

a co jeśli mam plugin który nie piszę na czacie tylko w hudzie?

Spoiler

#pragma semicolon 1
#pragma newdecls required

#include <sourcemod>
#include <cstrike> 
#include <sdktools>
#include <clientprefs>

public Plugin myinfo = 
{
    name = "HUDv2",
    author = "xSLOW",
    description = "Server Hud",
    version = "1.4"
};

enum {
    RED = 0,
    GREEN,
    BLUE
}

ConVar g_cvarMessage1;
ConVar g_cvarMessage2;
ConVar g_cvarMessage3;
ConVar g_cvarSlots;
ConVar g_cvarHUDColors;

Handle g_hHUDv2Cookie;
bool g_bIsHudEnabled[MAXPLAYERS + 1];
int g_iHUDColors[3];


public void OnPluginStart()
{
    g_hHUDv2Cookie = RegClientCookie("HudCookie_V2", "HudCookie_V2", CookieAccess_Protected);

    g_cvarMessage1 = CreateConVar("sm_hud_message1", "MESSAGE 1", "Top-Left first message", FCVAR_NOTIFY);
    g_cvarMessage2 = CreateConVar("sm_hud_message2", "MESSAGE 2", "Top-Left second message", FCVAR_NOTIFY);
    g_cvarMessage3 = CreateConVar("sm_hud_message3", "[ MESSAGE 3 ]", "Top-Mid third message", FCVAR_NOTIFY);
    g_cvarSlots = CreateConVar("sm_hud_slots", "32", "Number of server's slots", FCVAR_NOTIFY);
    g_cvarHUDColors = CreateConVar("sm_hud_rgb", "230,57,0", "RGB of the text. You can get more colors from https://www.hexcolortool.com/",
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! FCVAR_NOTIFY);

    AutoExecConfig(true, "HUDv2");

    UpdateHUDColor();
    g_cvarHUDColors.AddChangeHook(cvarChanged_HUDColor);

    CreateTimer(1.0, TIMER, _, TIMER_REPEAT);

    RegConsoleCmd("hud", Command_hud);
}

public void OnClientPutInServer(int client)
{
    g_bIsHudEnabled[client] = true;
    char buffer[64];
    GetClientCookie(client, g_hHUDv2Cookie, buffer, sizeof(buffer));
    if(StrEqual(buffer,"0"))
        g_bIsHudEnabled[client] = false;
}

public void cvarChanged_HUDColor(ConVar convar, const char[] oldValue, const char[] newValue) {
    UpdateHUDColor();
}

public Action Command_hud(int client, int args) 
{
    if(g_bIsHudEnabled[client])
    {
        PrintToChat(client, " ★ \x02HUD is now off");
        g_bIsHudEnabled[client] = false;
        SetClientCookie(client, g_hHUDv2Cookie, "0");
    }
    else
    {
        PrintToChat(client, " ★ \x04HUD is now on");
        g_bIsHudEnabled[client] = true;
        SetClientCookie(client, g_hHUDv2Cookie, "1");
    }
}


public Action TIMER(Handle timer, any client)
{
    int clientCount = 0, iTimeleft;
    char sTime[64], szTime[30], iMessage1[32], iMessage2[32], iMessage3[32], MapTimeLeft[128];

    for (int i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i))
            ++clientCount;
    }

    g_cvarMessage1.GetString(iMessage1, sizeof(iMessage1));
    g_cvarMessage2.GetString(iMessage2, sizeof(iMessage2));
    g_cvarMessage3.GetString(iMessage3, sizeof(iMessage3));

    GetMapTimeLeft(iTimeleft);
    FormatTime(szTime, sizeof(szTime), "%H:%M:%S", GetTime());
    FormatTime(sTime, sizeof(sTime), "%M:%S", iTimeleft);

    for(int i = 1; i <= MaxClients; i++)
    {
        if(g_bIsHudEnabled && IsClientValid(i))
        {
            char iBuffer[1024];
            if(!(iTimeleft > 0))
                Format(MapTimeLeft,sizeof(MapTimeLeft), "Last Round");
            else
                Format(MapTimeLeft,sizeof(MapTimeLeft), "%s", sTime);

            Format(iBuffer, sizeof(iBuffer),"%s\n%s\nPlayers: %d/%d\nTimeleft: %s\nClock: %s",iMessage1, iMessage2, clientCount, g_cvarSlots.IntValue, MapTimeLeft, szTime);
            SetHudTextParams(0.0, 0.0, 1.02, g_iHUDColors[RED], g_iHUDColors[GREEN], g_iHUDColors[BLUE], 255, 0, 0.0, 0.0, 0.0);  
            ShowHudText(i, -1, iBuffer);  

            SetHudTextParams(-1.0, 0.075, 1.02, g_iHUDColors[RED], g_iHUDColors[GREEN], g_iHUDColors[BLUE], 255, 0, 0.0, 0.0, 0.0);  
            ShowHudText(i, -1, iMessage3);  
        }
    }
}

bool IsClientValid(int client)
{
    return (0 < client <= MaxClients) && IsClientInGame(client) && !IsFakeClient(client);
}

void UpdateHUDColor() {
    char buffer[16];
    g_cvarHUDColors.GetString(buffer, sizeof(buffer));

    char buffer2[3][4];
    ExplodeString(buffer, ",", buffer2, sizeof(buffer2), sizeof(buffer2[]));
    
    for (int i = 0; i < 3; i++) {
        g_iHUDColors = StringToInt(buffer2);
    }
}

jesli moglbys to wytlumacz a poprobuje sam cos w koncu porobic xD

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Robisz dokładnie to samo co wytłumaczyłem wyżej tylko z linią:

Format(iBuffer, sizeof(iBuffer),"%s\n%s\nPlayers: %d/%d\nTimeleft: %s\nClock: %s",iMessage1, iMessage2, clientCount, g_cvarSlots.IntValue, MapTimeLeft, szTime);

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

aaaaa myślałem, że tu coś innego robić czyli tak naprawde mam tylko  to przetlumazcyc

"%s\n%s\nPlayers: %d/%d\nTimeleft: %s\nClock

 

Przez Vasto_Lorde,

Tak ^^

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

to dziękuję, można zamknąć ;) trzymaj repika i za pomoc i za poradnik ;D

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić obrazków. Dodaj lub załącz obrazki z adresu URL.


×
×
  • Dodaj nową pozycję...