Jump to content
  • Chmurka
  • Boróweczka
  • Jabłuszko
  • Limonka
  • Czekoladka
  • Węgielek

Recommended Posts

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

  • Lubię to! 2
  • Kocham to! 1
  • Haha! 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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);

 

  • Kocham to! 1

Share this post


Link to post
Share on other sites

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

 

By Vasto_Lorde,

Tak ^^

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

Nasza historia

Na początku byliśmy małą grupą internetowych znajomych, którzy stwierdzili, że potrzebne jest solidne forum, na którym znajdą się ludzie z dużą wiedzą programistyczną ukierunkowaną na CS:GO. Pomysł powstał na początku 2018 roku, a parę miesięcy później, 19 kwietnia, powstała ta strona internetowa. Jako alternatywna odpowiedź na inne tego typu miejsca, poważnie podeszliśmy do tematu, najpierw tłumacząc angielską dokumentację SourceMod'a na język polski, a potem pisząc rozległe poradniki i wypełniając forum najpotrzebniejszymi rzeczami dla właścicieli serwerów i programistów. Cała nasza Ekipa jest dumna z pracy jaką w to włożyliśmy i cieszymy się że zbierają się wokół nas zarówno ludzie znający tematy sourcepawn'a i konfiguracji, jak i również nowe twarze w tym "biznesie", którym z chęcią niesiemy wiedzę oraz pomoc w rozwiązywaniu problemów.

Największe modyfikacje serwerowe

×
×
  • Create New...