09:05:00

Battle Brothers Türkçe Yama ( İstek )

Bu Konuyu Görüntüleyen Kullanıcılar (Toplam: 1, Üyeler: 0, Misafirler: 1)

olcangrlyn

Çaylak
Yıllardır beklediğimiz ama kimsenin el sürmediği kendi şahsına münhasır bu oyun, artık yeterli altyapı ve imkan varsa göz önüne gelsin de bu oyun için hala bekleyenlerin olduğunu hatırlamak maksadı ile bir konu açayım dedim. Bu sene o sene mi ?

a4198078126_10.jpg
9HYiLE.jpg
worldmap_21.jpg
settlement-with-docks-1-1024x588.jpg
 
Ne çevirmenim ne yazılımcı ama ben çeviriye başladım çevirip kendim oynayacağım ^^ öncelikle dosyaları cnut direk nut değil şifrelenmiş dosyalar yani açınca "úúRIQS " bu tarz çıkıyor onun şifresini bir şekilde kırıp nut çevirdim. Ardından diyaloglar kodlara kodlanmış yeni nesil oyunlarda diyaloglar ayrı bir klasörde toplanmış şekilde oluyor böylece uğraşan kişi maksimum bir günde bir oyunu Türkçeye çevirebilir. Ama burada programcılıkta bilmek gerekiyor çünkü dediğim gibi diyaloglar kodların içine programlanmış kodlardan diyalogları tek tek tespit edip Türkçeye çevirmen gerekiyor bunu yaparken de kodlamayı tabi ki de bozmaman gerekiyor ve oyunun içinde 5000 fazla diyalog var kimsenin totişi yemez çevirmeyi yani. Mesela örnek bir tane çevirdiğim dosyayı atıyorum binlerce böyle dosya var.
 
Ne çevirmenim ne yazılımcı ama ben çeviriye başladım çevirip kendim oynayacağım ^^ öncelikle dosyaları cnut direk nut değil şifrelenmiş dosyalar yani açınca "úúRIQS " bu tarz çıkıyor onun şifresini bir şekilde kırıp nut çevirdim. Ardından diyaloglar kodlara kodlanmış yeni nesil oyunlarda diyaloglar ayrı bir klasörde toplanmış şekilde oluyor böylece uğraşan kişi maksimum bir günde bir oyunu Türkçeye çevirebilir. Ama burada programcılıkta bilmek gerekiyor çünkü dediğim gibi diyaloglar kodların içine programlanmış kodlardan diyalogları tek tek tespit edip Türkçeye çevirmen gerekiyor bunu yaparken de kodlamayı tabi ki de bozmaman gerekiyor ve oyunun içinde 5000 fazla diyalog var kimsenin totişi yemez çevirmeyi yani. Masala örnek bir tane çevirdiğim dosyayı atıyorum binlerce böyle dosya var.
this.brawler_teaches_event <- this.inherit("scripts/events/event", {
m = {
Brawler = null,
Student = null
},
function create()
{
this.m.ID = "event.brawler_teaches";
this.m.Title = "Kamp sırasında...";
this.m.Cooldown = 70.0 * this.World.getTime().SecondsPerDay;
this.m.Screens.push({
ID = "A",
Text = "
event_05.png
Arkandan bir gölge düşüyor. Döndüğünde %brawler%, gözleri uzaklara dalmış olarak orada duruyor. Uzun bir ritimle eklemlerini çıtlatıp %noncom%'u yetiştirmesine izin verilip verilmeyeceğini soruyor. Neden diye soruyorsun. Kavgacı sana yukarıdan bakıyor.%SPEECH_ON%Çünkü zayıf.%SPEECH_OFF%Hmm, yeterince iyi sebep.",
Image = "",
List = [],
Characters = [],
Options = [
{
Text = "Ne kadar devam ettirebildiğini gör.",
function getResult( _event )
{
return "B";
}

},
{
Text = "Onu sertleştir, olur mu?",
function getResult( _event )
{
return "C";
}

},
{
Text = "Tam olarak nasıl kavga edileceğini ona öğret.",
function getResult( _event )
{
return "D";
}

}
],
function start( _event )
{
this.Characters.push(_event.m.Brawler.getImagePath());
this.Characters.push(_event.m.Student.getImagePath());
_event.m.Brawler.getFlags().add("brawler_teaches");
_event.m.Student.getFlags().add("brawler_teaches");
_event.m.Brawler.improveMood(0.25, "Has toughened up " + _event.m.Student.getName());
}

});
 
this.brawler_teaches_event <- this.inherit("scripts/events/event", {
m = {
Brawler = null,
Student = null
},
function create()
{
this.m.ID = "event.brawler_teaches";
this.m.Title = "Kamp sırasında...";
this.m.Cooldown = 70.0 * this.World.getTime().SecondsPerDay;
this.m.Screens.push({
ID = "A",
Text = "
event_05.png
Arkandan bir gölge düşüyor. Döndüğünde %brawler%, gözleri uzaklara dalmış olarak orada duruyor. Uzun bir ritimle eklemlerini çıtlatıp %noncom%'u yetiştirmesine izin verilip verilmeyeceğini soruyor. Neden diye soruyorsun. Kavgacı sana yukarıdan bakıyor.%SPEECH_ON%Çünkü zayıf.%SPEECH_OFF%Hmm, yeterince iyi sebep.",
Image = "",
List = [],
Characters = [],
Options = [
{
Text = "Ne kadar devam ettirebildiğini gör.",
function getResult( _event )
{
return "B";
}

},
{
Text = "Onu sertleştir, olur mu?",
function getResult( _event )
{
return "C";
}

},
{
Text = "Tam olarak nasıl kavga edileceğini ona öğret.",
function getResult( _event )
{
return "D";
}

}
],
function start( _event )
{
this.Characters.push(_event.m.Brawler.getImagePath());
this.Characters.push(_event.m.Student.getImagePath());
_event.m.Brawler.getFlags().add("brawler_teaches");
_event.m.Student.getFlags().add("brawler_teaches");
_event.m.Brawler.improveMood(0.25, "Has toughened up " + _event.m.Student.getName());
}

});
this.m.Screens.push({
ID = "B",
Text = "
event_06.png
%brawler% ve %noncom%, elleri bez ve yapraklarla sarılı çamur çukurunda bulunuyor. Kavgacı, çırağını dövüş çemberinin etrafında saat yönünün tersine zıplatıyor; geçerken vuruyor ya da tekmeliyor. Çalışırken adamlar terden parlıyor. %noncom% yavaşladığında %brawler% onu jokey ata vurur gibi vuruyor.\n\nBir saatten sonra %brawler% geri çekilip çırağını kavgaya davet ediyor. Tahmin edildiği üzere saldırı hedefsiz ve acınası. Uzun, döngüsel yumruklar hiç enerji olmadan atılıyor. Kavgacı saptırıp savunuyor; her denemede karşı yumruk indiriyor.%SPEECH_ON%Yorgunken ne oluyor görüyor musun? Bu yüzden antrenman yapmak zorundayız. Ne kadar yetenekli ne kadar ölümcül olursan ol ciğerlerinde hava ve altında taze bacak yoksa,bir hiçsin.%SPEECH_OFF%",
Image = "",
List = [],
Characters = [],
Options = [
{
Text = "Bunu izlemek bile yoruyor beni.",
function getResult( _event )
{
return 0;
}

}
],
function start( _event )
{
this.Characters.push(_event.m.Brawler.getImagePath());
this.Characters.push(_event.m.Student.getImagePath());
local skill = this.Math.rand(2, 4);
_event.m.Student.getBaseProperties().Stamina += skill;
_event.m.Student.getSkills().update();
this.List.push({
id = 16,
icon = "ui/icons/fatigue.png",
text = _event.m.Student.getName() + " gains [color=" + this.Const.UI.Color.PositiveEventValue + "]+" + skill + "[/color] Max Fatigue"
});
}

});
this.m.Screens.push({
ID = "C",
Text = "
event_06.png
Kavgacı %noncom%'u tamamen hareketsiz durduruyor. Etrafında dolaşarak eklemlerini çıtlatıyor. Son olarak niyetini açıklıyor.%SPEECH_ON%Kırılana kadar dövüyorum seni.%SPEECH_OFF%Çırağa ne olacağını hazmetmesi için bir an veriliyor. Derin bir nefes çekip başını sallıyor. %brawler% gecikmeden adamın göğsüne güçlü bir yumruk indiriyor. Tekrar ayağa kalkana kadar omuzdan tekrar tekrar tekmeleniyor.\n\nKavgacı çevresinde dönmeye ve darbe vurmaya devam ediyor. Her darbeyi inançla atmıyor; çoğu zarar vermek için ama geri dönülemez hasar olarak nitelendirilemez. İstese bu adamı çıplak elleriyle öldürebilir; ama antrenmanın amacı bu değil. Bu 'sertleştirme' biçiminin bir noktada kavgacının başına da gelmiş olduğunu fark ediyorsun.",
Image = "",
List = [],
Characters = [],
Options = [
{
Text = "Seni öldürmeyen şey seni güçlendirir?",
function getResult( _event )
{
return 0;
}

}
],
function start( _event )
{
this.Characters.push(_event.m.Brawler.getImagePath());
this.Characters.push(_event.m.Student.getImagePath());
local skill = this.Math.rand(2, 4);
_event.m.Student.getBaseProperties().Hitpoints += skill;
_event.m.Student.getSkills().update();
this.List.push({
id = 16,
icon = "ui/icons/health.png",
text = _event.m.Student.getName() + " gains [color=" + this.Const.UI.Color.PositiveEventValue + "]+" + skill + "[/color] Hitpoints"
});
_event.m.Student.addLightInjury();
this.List.push({
id = 10,
icon = "ui/icons/days_wounded.png",
text = _event.m.Student.getName() + " suffers light wounds"
});
}

});
this.m.Screens.push({
ID = "D",
Text = "
event_06.png
Ağır elli, sert kavgacı %brawler%, kollarını önünde çit gibi uzatmış savunma duruşunda eğilmiş ve %noncom% yanında duruyor; duruşu taklit etmeye çalışıyor. Kavgacı vücudunu alçaltıp %noncom%'un kollarının altına giriyor; orada her iki eliyle belini kavrayıp havaya kaldırıp sırtüstü bırakıyor. %brawler% eklemlerini çıtlatarak geri çekiliyor ve %noncom%'a kalkmasını söylüyor.%SPEECH_ON%İki şeye hazır olman lazım: içeri alçak girişim ve içeri yüksek girişim.%SPEECH_OFF%%noncom% tozunu silkip şikâyet ediyor.%SPEECH_ON%İkisine nasıl hazırlanabilirim ki?%SPEECH_OFF%Kavgacı soruyu yok sayıp sadece adama saldırmasını istiyor. %noncom% uyuyor; yukarıdan yumruk atıyor. %brawler% bir omuz rulesi ile darbeyi savuşturup %noncom%'u kendi etrafında döndüren çapraz bir karşı-yumruk atıyor. Yumrukçu eklemlerini tekrar çıtlatıp tükürüyor.%SPEECH_ON%Antrenman. Böyle olur. Şimdi kalk, bir daha.%SPEECH_OFF%",
Image = "",
List = [],
Characters = [],
Options = [
{
Text = "Belki gerçek bir paralı asker olacak sonunda.",
function getResult( _event )
{
return 0;
}

}
],
function start( _event )
 
this.m.Screens.push({
ID = "B",
Text = "
event_06.png
%brawler% ve %noncom%, elleri bez ve yapraklarla sarılı çamur çukurunda bulunuyor. Kavgacı, çırağını dövüş çemberinin etrafında saat yönünün tersine zıplatıyor; geçerken vuruyor ya da tekmeliyor. Çalışırken adamlar terden parlıyor. %noncom% yavaşladığında %brawler% onu jokey ata vurur gibi vuruyor.\n\nBir saatten sonra %brawler% geri çekilip çırağını kavgaya davet ediyor. Tahmin edildiği üzere saldırı hedefsiz ve acınası. Uzun, döngüsel yumruklar hiç enerji olmadan atılıyor. Kavgacı saptırıp savunuyor; her denemede karşı yumruk indiriyor.%SPEECH_ON%Yorgunken ne oluyor görüyor musun? Bu yüzden antrenman yapmak zorundayız. Ne kadar yetenekli ne kadar ölümcül olursan ol ciğerlerinde hava ve altında taze bacak yoksa,bir hiçsin.%SPEECH_OFF%",
Image = "",
List = [],
Characters = [],
Options = [
{
Text = "Bunu izlemek bile yoruyor beni.",
function getResult( _event )
{
return 0;
}

}
],
function start( _event )
{
this.Characters.push(_event.m.Brawler.getImagePath());
this.Characters.push(_event.m.Student.getImagePath());
local skill = this.Math.rand(2, 4);
_event.m.Student.getBaseProperties().Stamina += skill;
_event.m.Student.getSkills().update();
this.List.push({
id = 16,
icon = "ui/icons/fatigue.png",
text = _event.m.Student.getName() + " gains [color=" + this.Const.UI.Color.PositiveEventValue + "]+" + skill + "[/color] Max Fatigue"
});
}

});
this.m.Screens.push({
ID = "C",
Text = "
event_06.png
Kavgacı %noncom%'u tamamen hareketsiz durduruyor. Etrafında dolaşarak eklemlerini çıtlatıyor. Son olarak niyetini açıklıyor.%SPEECH_ON%Kırılana kadar dövüyorum seni.%SPEECH_OFF%Çırağa ne olacağını hazmetmesi için bir an veriliyor. Derin bir nefes çekip başını sallıyor. %brawler% gecikmeden adamın göğsüne güçlü bir yumruk indiriyor. Tekrar ayağa kalkana kadar omuzdan tekrar tekrar tekmeleniyor.\n\nKavgacı çevresinde dönmeye ve darbe vurmaya devam ediyor. Her darbeyi inançla atmıyor; çoğu zarar vermek için ama geri dönülemez hasar olarak nitelendirilemez. İstese bu adamı çıplak elleriyle öldürebilir; ama antrenmanın amacı bu değil. Bu 'sertleştirme' biçiminin bir noktada kavgacının başına da gelmiş olduğunu fark ediyorsun.",
Image = "",
List = [],
Characters = [],
Options = [
{
Text = "Seni öldürmeyen şey seni güçlendirir?",
function getResult( _event )
{
return 0;
}

}
],
function start( _event )
{
this.Characters.push(_event.m.Brawler.getImagePath());
this.Characters.push(_event.m.Student.getImagePath());
local skill = this.Math.rand(2, 4);
_event.m.Student.getBaseProperties().Hitpoints += skill;
_event.m.Student.getSkills().update();
this.List.push({
id = 16,
icon = "ui/icons/health.png",
text = _event.m.Student.getName() + " gains [color=" + this.Const.UI.Color.PositiveEventValue + "]+" + skill + "[/color] Hitpoints"
});
_event.m.Student.addLightInjury();
this.List.push({
id = 10,
icon = "ui/icons/days_wounded.png",
text = _event.m.Student.getName() + " suffers light wounds"
});
}

});
this.m.Screens.push({
ID = "D",
Text = "
event_06.png
Ağır elli, sert kavgacı %brawler%, kollarını önünde çit gibi uzatmış savunma duruşunda eğilmiş ve %noncom% yanında duruyor; duruşu taklit etmeye çalışıyor. Kavgacı vücudunu alçaltıp %noncom%'un kollarının altına giriyor; orada her iki eliyle belini kavrayıp havaya kaldırıp sırtüstü bırakıyor. %brawler% eklemlerini çıtlatarak geri çekiliyor ve %noncom%'a kalkmasını söylüyor.%SPEECH_ON%İki şeye hazır olman lazım: içeri alçak girişim ve içeri yüksek girişim.%SPEECH_OFF%%noncom% tozunu silkip şikâyet ediyor.%SPEECH_ON%İkisine nasıl hazırlanabilirim ki?%SPEECH_OFF%Kavgacı soruyu yok sayıp sadece adama saldırmasını istiyor. %noncom% uyuyor; yukarıdan yumruk atıyor. %brawler% bir omuz rulesi ile darbeyi savuşturup %noncom%'u kendi etrafında döndüren çapraz bir karşı-yumruk atıyor. Yumrukçu eklemlerini tekrar çıtlatıp tükürüyor.%SPEECH_ON%Antrenman. Böyle olur. Şimdi kalk, bir daha.%SPEECH_OFF%",
Image = "",
List = [],
Characters = [],
Options = [
{
Text = "Belki gerçek bir paralı asker olacak sonunda.",
function getResult( _event )
{
return 0;
}

}
],
function start( _event )
{
this.Characters.push(_event.m.Brawler.getImagePath());
this.Characters.push(_event.m.Student.getImagePath());
local attack = this.Math.rand(1, 2);
local defense = this.Math.rand(1, 2);
_event.m.Student.getBaseProperties().MeleeSkill += attack;
_event.m.Student.getBaseProperties().MeleeDefense += defense;
_event.m.Student.getSkills().update();
this.List.push({
id = 16,
icon = "ui/icons/melee_skill.png",
text = _event.m.Student.getName() + " gains [color=" + this.Const.UI.Color.PositiveEventValue + "]+" + attack + "[/color] Melee Skill"
});
this.List.push({
id = 16,
icon = "ui/icons/melee_defense.png",
text = _event.m.Student.getName() + " gains [color=" + this.Const.UI.Color.PositiveEventValue + "]+" + defense + "[/color] Melee Defense"
});
}

});
}

function onUpdateScore()
{
local brothers = this.World.getPlayerRoster().getAll();

if (brothers.len() < 3)
{
return;
}

local candidates_brawler = [];
local candidates_student = [];

foreach( bro in brothers )
{
if (bro.getFlags().has("brawler_teaches"))
{
continue;
}

if (bro.getLevel() >= 3 && bro.getBackground().getID() == "background.brawler")
{
candidates_brawler.push(bro);
}
else if (bro.getLevel() < 3 && !bro.getBackground().isCombatBackground())
{
candidates_student.push(bro);
}
}

if (candidates_brawler.len() == 0 || candidates_student.len() == 0)
{
return;
}

this.m.Brawler = candidates_brawler[this.Math.rand(0, candidates_brawler.len() - 1)];
this.m.Student = candidates_student[this.Math.rand(0, candidates_student.len() - 1)];
this.m.Score = (candidates_brawler.len() + candidates_student.len()) * 3;
}

function onPrepare()
{
}

function onPrepareVariables( _vars )
{
_vars.push([
"brawler",
this.m.Brawler.getNameOnly()
]);
_vars.push([
"noncom",
this.m.Student.getNameOnly()
]);
}

function onClear()
{
this.m.Brawler = null;
this.m.Student = null;
}

}); Ve bu sadece bir dosya bu zamana kadar kimsenin neden çevirmediğini veya çeviremediğini anlamışsınızdır umarım zoru yaparız ama imkansız zaman alır.
 
Son düzenleme:

Son mesajlar

shape1
shape2
shape3
shape4
shape5
shape6
Geri
Üst