[[http://www.siedler-games.de|{{:sg-link.jpg|}}]]
====== Schreiben auf der Map ======
Mit diesem Tool könnt ihr Schift auf die Map bringen.
posBeginn = GetPosition("startSchrift")
Schreibe(" Peermanent ",posBeginn,Entities.XD_Rock1,100)
function Schreibe(_text, _pos, _entity, _hoehe, _abstand)
if type (_pos) == "string" or type (_pos) == "number" then
_pos = GetPosition(_pos);
end
_abstand = _abstand or 600
local rueck = {}
local AddTable=function(_array) for i = 1, table.getn(_array) do table.insert(rueck,_array[i]) end end
_text = string.upper(_text)
_text = string.gsub(_text, "ä","Ä")
_text = string.gsub(_text, "ö","Ö")
_text = string.gsub(_text, "ü","Ü")
_text = string.gsub( _text, "\195\132", "Ä" );
_text = string.gsub( _text, "\195\150", "Ö" );
_text = string.gsub( _text, "\195\156", "Ü" );
_text = string.gsub( _text, "\195\164", "Ä" );
_text = string.gsub( _text, "\195\182", "Ö" );
_text = string.gsub( _text, "\195\188", "Ü" );
_entity = _entity or Entities.PU_BattleSerf
_hoehe = _hoehe or 800
local faktor = _hoehe / 800
local buchStabe, mitte1, ret
local posUnten = _pos
local posOben = {X=posUnten.X+800 * faktor,Y=posUnten.Y+800 * faktor}
local posMitte= {X=(posOben.X-posUnten.X)/2+posUnten.X,Y=(posOben.Y-posUnten.Y)/2+posUnten.Y}
local posUnten2= {X=posUnten.X+200 * faktor,Y=posUnten.Y-200 * faktor}
local posOben2 = {X=posUnten2.X+800 * faktor,Y=posUnten2.Y+800 * faktor}
local posMitte2 ={X=posMitte.X+200 * faktor,Y=posMitte.Y-200 * faktor}
local posUnten3= {X=posUnten2.X+200 * faktor,Y=posUnten2.Y-200 * faktor}
local posOben3 = {X=posUnten3.X+800 * faktor,Y=posUnten3.Y+800 * faktor}
local posMitte3 ={X=posMitte2.X+200 * faktor,Y=posMitte2.Y-200 * faktor}
local kreisM1 = {X=_pos.X+400 * faktor,Y=_pos.Y+400 * faktor}
local kreisM2 = {X=kreisM1.X+400 * faktor,Y=kreisM1.Y-400 * faktor}
for i = 1, string.len(_text) do
buchstabe = string.sub(_text,i,i)
if buchstabe == "A" then
local aPos1 = {X=posMitte.X-100 * faktor, Y=posMitte.Y-200 * faktor}
local aPos2 = {X=posMitte3.X-200 * faktor, Y=posMitte3.Y-100 * faktor}
AddTable(Line(posUnten, posOben2, _entity, 20))
AddTable(Line(posUnten3, posOben2, _entity, 20))
AddTable(Line(aPos1, aPos2, _entity, 20))
elseif buchstabe == "Ä" then
local aPos1 = {X=posMitte.X-100 * faktor, Y=posMitte.Y-200 * faktor}
local aPos2 = {X=posMitte3.X-200 * faktor, Y=posMitte3.Y-100 * faktor}
AddTable(Line({X=posUnten.X+800 * faktor,Y=posUnten.Y+600 * faktor}, {X=posOben.X+ 150 * faktor,Y=posOben.Y-50 * faktor}, _entity, 10))
AddTable(Line({X=posUnten2.X+800 * faktor,Y=posUnten2.Y+600 * faktor}, {X=posOben2.X+ 150 * faktor,Y=posOben2.Y-50 * faktor}, _entity, 10))
AddTable(Line(posUnten, posOben2, _entity, 20))
AddTable(Line(posUnten3, posOben2, _entity, 20))
AddTable(Line(aPos1, aPos2, _entity, 20))
elseif buchstabe == "B" then
local cPos1 = {X=posMitte.X+250 * faktor, Y=posMitte.Y+150 * faktor}
local cPos2 = {X=posMitte.X-150 * faktor, Y=posMitte.Y-250 * faktor}
AddTable(Line(posUnten, posOben, _entity, 20))
AddTable(Kreis(cPos2, 300 * faktor, _entity,5,40,225))
AddTable(Kreis(cPos1, 250 * faktor, _entity,5,40,225))
elseif buchstabe == "C" then
AddTable(Kreis(kreisM2, 550 * faktor, _entity,5,240,400))
elseif buchstabe == "D" then
AddTable(Kreis(kreisM1, 550 * faktor, _entity,5,45, 220))
AddTable(Line(posUnten, posOben, _entity, 20))
elseif buchstabe == "E" then
AddTable(Line(posUnten, posOben, _entity, 20))
AddTable(Line(posOben, posOben3, _entity, 10))
AddTable(Line(posMitte, posMitte3, _entity, 10))
AddTable(Line(posUnten, posUnten3, _entity, 10))
elseif buchstabe == "F" then
AddTable(Line(posUnten, posOben, _entity, 20))
AddTable(Line(posOben, posOben3, _entity, 10))
AddTable(Line(posMitte, posMitte3, _entity, 10))
elseif buchstabe == "G" then
AddTable(Line({X=posUnten.X+200 * faktor,Y=posUnten.Y+200 * faktor}, {X=posOben.X-200 * faktor,Y=posOben.Y-200 * faktor}, _entity, 10))
AddTable(Line({X=posUnten3.X+200 * faktor,Y=posUnten3.Y+200 * faktor}, posMitte3, _entity, 10))
AddTable(Line(posMitte2, posMitte3, _entity, 10))
AddTable(Kreis({X=posMitte2.X+200 * faktor,Y=posMitte2.Y+200 * faktor}, 300 * faktor, _entity,5,130,310))
AddTable(Kreis({X=posMitte2.X-200 * faktor,Y=posMitte2.Y-200 * faktor}, 300 * faktor, _entity,5,-30,120))
elseif buchstabe == "H" then
AddTable(Line(posUnten, posOben, _entity, 20))
AddTable(Line(posMitte, posMitte3, _entity, 10))
AddTable(Line(posUnten3, posOben3, _entity, 10))
elseif buchstabe == "I" then
AddTable(Line(posUnten2, posOben2, _entity, 10))
elseif buchstabe == "J" then
AddTable(Line({X=posUnten3.X+200 * faktor,Y=posUnten3.Y+200 * faktor}, posOben3, _entity, 10))
AddTable(Kreis({X=posMitte2.X-200 * faktor,Y=posMitte2.Y-200 * faktor}, 300 * faktor, _entity,5,-30,120))
elseif buchstabe == "K" then
AddTable(Line(posUnten, posOben, _entity, 20))
AddTable(Line(posMitte, posOben3, _entity, 10))
AddTable(Line(posMitte, posUnten3, _entity, 10))
elseif buchstabe == "L" then
AddTable(Line(posUnten, posOben, _entity, 20))
AddTable(Line(posUnten, posUnten3, _entity, 10))
elseif buchstabe == "M" then
AddTable(Line(posUnten, posOben, _entity, 20))
AddTable(Line(posOben, posUnten2, _entity, 10))
AddTable(Line(posOben3, posUnten2, _entity, 10))
AddTable(Line(posOben3, posUnten3, _entity, 10))
elseif buchstabe == "N" then
AddTable(Line(posUnten, posOben, _entity, 20))
AddTable(Line(posOben, posUnten3, _entity, 10))
AddTable(Line(posOben3, posUnten3, _entity, 10))
elseif buchstabe == "O" then
AddTable(Line({X=posUnten.X+200 * faktor,Y=posUnten.Y+200 * faktor}, {X=posOben.X-200 * faktor,Y=posOben.Y-200 * faktor}, _entity, 10))
AddTable(Line({X=posUnten3.X+200 * faktor,Y=posUnten3.Y+200 * faktor}, {X=posOben3.X-200 * faktor,Y=posOben3.Y-200 * faktor}, _entity, 10))
AddTable(Kreis({X=posMitte2.X+200 * faktor,Y=posMitte2.Y+200 * faktor}, 300 * faktor, _entity,5,130,310))
AddTable(Kreis({X=posMitte2.X-200 * faktor,Y=posMitte2.Y-200 * faktor}, 300 * faktor, _entity,5,-30,120))
elseif buchstabe == "Ö" then
AddTable(Line({X=posUnten.X+800 * faktor,Y=posUnten.Y+600 * faktor}, {X=posOben.X+ 150 * faktor,Y=posOben.Y-50 * faktor}, _entity, 10))
AddTable(Line({X=posUnten2.X+800 * faktor,Y=posUnten2.Y+600 * faktor}, {X=posOben2.X+ 150 * faktor,Y=posOben2.Y-50 * faktor}, _entity, 10))
AddTable(Line({X=posUnten.X+200 * faktor,Y=posUnten.Y+200 * faktor}, {X=posOben.X-200 * faktor,Y=posOben.Y-200 * faktor}, _entity, 10))
AddTable(Line({X=posUnten3.X+200 * faktor,Y=posUnten3.Y+200 * faktor}, {X=posOben3.X-200 * faktor,Y=posOben3.Y-200 * faktor}, _entity, 10))
AddTable(Kreis({X=posMitte2.X+200 * faktor,Y=posMitte2.Y+200 * faktor}, 300 * faktor, _entity,5,130,310))
AddTable(Kreis({X=posMitte2.X-200 * faktor,Y=posMitte2.Y-200 * faktor}, 300 * faktor, _entity,5,-30,120))
elseif buchstabe == "P" then
local cPos1 = {X=posMitte.X+250 * faktor, Y=posMitte.Y+150 * faktor}
AddTable(Line(posUnten, posOben, _entity, 20))
AddTable(Kreis(cPos1, 250 * faktor, _entity,5,40,225))
elseif buchstabe == "Q" then
AddTable(Line({X=posUnten.X+200 * faktor,Y=posUnten.Y+200 * faktor}, {X=posOben.X-200 * faktor,Y=posOben.Y-200 * faktor}, _entity, 10))
AddTable(Line({X=posUnten3.X+200 * faktor,Y=posUnten3.Y+200 * faktor}, {X=posOben3.X-200,Y=posOben3.Y-200 * faktor}, _entity, 10))
AddTable(Line(posMitte2, posUnten3, _entity, 10))
AddTable(Kreis({X=posMitte2.X+200 * faktor,Y=posMitte2.Y+200 * faktor}, 300 * faktor, _entity,5,130,310))
AddTable(Kreis({X=posMitte2.X-200 * faktor,Y=posMitte2.Y-200 * faktor}, 300 * faktor, _entity,5,-30,120))
elseif buchstabe == "R" then
local cPos1 = {X=posMitte.X+250 * faktor, Y=posMitte.Y+150 * faktor}
AddTable(Line(posUnten, posOben, _entity, 20))
AddTable(Line(posMitte, posUnten3, _entity, 10))
AddTable(Kreis(cPos1, 250 * faktor, _entity,5,40,225))
elseif buchstabe == "S" then
AddTable(Line({X=posUnten3.X+200 * faktor,Y=posUnten3.Y+200 * faktor}, {X=posOben.X-200 * faktor,Y=posOben.Y-200 * faktor}, _entity, 10))
AddTable(Kreis({X=posMitte2.X+200 * faktor,Y=posMitte2.Y+200 * faktor}, 300 * faktor, _entity,5,130,310))
AddTable(Kreis({X=posMitte2.X-200 * faktor,Y=posMitte2.Y-200 * faktor}, 300 * faktor, _entity,5,-30,120))
elseif buchstabe == "T" then
AddTable(Line(posUnten2, posOben2, _entity, 20))
AddTable(Line(posOben, posOben3, _entity, 10))
elseif buchstabe == "U" then
AddTable(Line({X=posUnten.X+200 * faktor,Y=posUnten.Y+200 * faktor}, posOben, _entity, 10))
AddTable(Line({X=posUnten3.X+200 * faktor,Y=posUnten3.Y+200 * faktor}, posOben3, _entity, 10))
AddTable(Kreis({X=posMitte2.X-200 * faktor,Y=posMitte2.Y-200 * faktor}, 300 * faktor, _entity,5,-30,120))
elseif buchstabe == "Ü" then
AddTable(Line({X=posUnten.X+800 * faktor,Y=posUnten.Y+600 * faktor}, {X=posOben.X+ 150 * faktor,Y=posOben.Y-50 * faktor}, _entity, 10))
AddTable(Line({X=posUnten2.X+800 * faktor,Y=posUnten2.Y+600 * faktor}, {X=posOben2.X+ 150 * faktor,Y=posOben2.Y-50 * faktor}, _entity, 10))
AddTable(Line({X=posUnten.X+200 * faktor,Y=posUnten.Y+200 * faktor}, posOben, _entity, 10))
AddTable(Line({X=posUnten3.X+200 * faktor,Y=posUnten3.Y+200 * faktor}, posOben3, _entity, 10))
AddTable(Kreis({X=posMitte2.X-200 * faktor,Y=posMitte2.Y-200 * faktor}, 300 * faktor, _entity,5,-30,120))
elseif buchstabe == "V" then
AddTable(Line(posUnten2, posOben3, _entity, 20))
AddTable(Line(posOben, posUnten2, _entity, 10))
elseif buchstabe == "W" then
AddTable(Line({X=posUnten2.X-100 * faktor,Y=posUnten2.Y+100 * faktor}, posOben, _entity, 20))
AddTable(Line({X=posUnten2.X-100 * faktor,Y=posUnten2.Y+100 * faktor}, posMitte2, _entity, 20))
AddTable(Line({X=posUnten2.X+100 * faktor,Y=posUnten2.Y-100 * faktor}, posMitte2, _entity, 20))
AddTable(Line({X=posUnten2.X+100 * faktor,Y=posUnten2.Y-100 * faktor}, posOben3, _entity, 20))
elseif buchstabe == "X" then
AddTable(Line(posUnten, posOben3, _entity, 20))
AddTable(Line(posOben, posUnten3, _entity, 10))
elseif buchstabe == "Y" then
AddTable(Line(posOben, posMitte2, _entity, 10))
AddTable(Line(posMitte2, posOben3, _entity, 20))
AddTable(Line(posMitte2, posUnten2, _entity, 20))
elseif buchstabe == "Z" then
AddTable(Line(posOben, posOben3, _entity, 10))
AddTable(Line(posUnten, posUnten3, _entity, 20))
AddTable(Line(posUnten, posOben3, _entity, 10))
elseif buchstabe == "*" then
AddTable(Line(posUnten2, posOben2, _entity, 10))
AddTable(Line(posUnten, posOben3, _entity, 20))
AddTable(Line(posOben, posUnten3, _entity, 10))
AddTable(Line(posMitte, posMitte3, _entity, 10))
end
posUnten= {X=posUnten.X+_abstand * faktor,Y=posUnten.Y-_abstand * faktor}
posOben = {X=posUnten.X+800 * faktor,Y=posUnten.Y+800 * faktor}
posMitte= {X=(posOben.X-posUnten.X)/2+posUnten.X,Y=(posOben.Y-posUnten.Y)/2+posUnten.Y}
posUnten2= {X=posUnten.X+200 * faktor,Y=posUnten.Y-200 * faktor}
posOben2 = {X=posUnten2.X+800 * faktor,Y=posUnten2.Y+800 * faktor}
posMitte2 ={X=posMitte.X+200 * faktor,Y=posMitte.Y-200 * faktor}
posUnten3= {X=posUnten2.X+200 * faktor,Y=posUnten2.Y-200 * faktor}
posOben3 = {X=posUnten3.X+800 * faktor,Y=posUnten3.Y+800 * faktor}
posMitte3 ={X=posMitte2.X+200 * faktor,Y=posMitte2.Y-200 * faktor}
kreisM1 = {X=posUnten.X+400 * faktor,Y=posUnten.Y+400 * faktor}
kreisM2 = {X=kreisM1.X+400 * faktor,Y=kreisM1.Y-400 * faktor}
end
return rueck
end
function Line(_pos1, _pos2, _entity, _anzahl)
if type (_pos1) == "string" or type (_pos1) == "number" then
_pos1 = GetPosition(_pos1);
end
if type (_pos2) == "string" or type (_pos2) == "number" then
_pos2 = GetPosition(_pos2);
end
local laenge = math.sqrt(math.abs(_pos1.X - _pos2.X)^2 + math.abs(_pos1.Y - _pos2.Y)^2)
_anzahl = laenge / 30
local deltaX = math.abs(_pos1.X - _pos2.X)/_anzahl
local deltaY = math.abs(_pos1.Y - _pos2.Y)/_anzahl
local tIDs={}
local x, y = 0,0
_anzahl = _anzahl + 1
if _pos1.X > _pos2.X then
if _pos1.Y > _pos2.Y then
for i = 1, _anzahl do
table.insert(tIDs, Logic.CreateEntity(_entity, _pos1.X-x, _pos1.Y-y, 0, 4))
x = x + deltaX
y = y + deltaY
end
elseif _pos1.Y <= _pos2.Y then
for i = 1, _anzahl do
table.insert(tIDs, Logic.CreateEntity(_entity, _pos1.X-x, _pos1.Y+y, 0, 4))
x = x + deltaX
y = y + deltaY
end
end
else
if _pos1.Y > _pos2.Y then
for i = 1, _anzahl do
table.insert(tIDs, Logic.CreateEntity(_entity, _pos1.X+x, _pos1.Y-y, 0, 4))
x = x + deltaX
y = y + deltaY
end
elseif _pos1.Y <= _pos2.Y then
for i = 1, _anzahl do
table.insert(tIDs, Logic.CreateEntity(_entity, _pos1.X+x, _pos1.Y+y, 0, 4))
x = x + deltaX
y = y + deltaY
end
end
end
return tIDs
end
function Kreis(_pos, _range, _entity,_diffAngle,_von, _bis)
_diffAngle = 20
local nSin;
local nCos;
local tIDs={}
_von = _von or 0
_bis = _bis or 360
if _range == nil then
return false
end
if type (_pos) == "string" or type (_pos) == "number" then
_pos = GetPosition(_pos);
end
if _diffAngle == nil then
_diffAngle = 10
end
if _entity == nil then
_entity = Entities.XD_MiscSword
end
for i = _von , _bis, _diffAngle do
nSin=math.sin((math.rad(i)));
nCos=math.cos((math.rad(i)));
table.insert(tIDs,Logic.CreateEntity(_entity,_pos.X-nCos*_range,_pos.Y-nSin*_range,0,4))
end
return tIDs
end