//-----------------------------------------
// By Florian Köberle
// eMail-Name: "FloriansKarten"; eMail-Provider: "web.de"
//
// Using Perlin noise to create a forest
// Using NURBS curves to create paths
//-------------------------------------------
function RandomStartPosition takes nothing returns nothing
set udg_TeamPos[0] = GetRandomInt(0, 2)
if udg_TeamPos[0] == 0 then
if GetRandomInt(0, 1) == 1 then
set udg_TeamPos[1] = 1
set udg_TeamPos[2] = 2
else
set udg_TeamPos[1] = 2
set udg_TeamPos[2] = 1
endif
endif
if udg_TeamPos[0] == 1 then
if GetRandomInt(0, 1) == 1 then
set udg_TeamPos[1] = 0
set udg_TeamPos[2] = 2
else
set udg_TeamPos[1] = 2
set udg_TeamPos[2] = 0
endif
endif
if udg_TeamPos[0] == 2 then
if GetRandomInt(0, 1) == 1 then
set udg_TeamPos[1] = 0
set udg_TeamPos[2] = 1
else
set udg_TeamPos[1] = 1
set udg_TeamPos[2] = 0
endif
endif
endfunction
function GetValue takes integer X, integer Y returns integer
return udg_Wert[(X + (Y*(udg_DataSize-1)))]
endfunction
function SetValue takes integer X, integer Y , integer Value returns nothing
set udg_Wert[(X + (Y*(udg_DataSize-1)))] = Value
endfunction
function Interpoliere takes integer Wert1, integer Wert2, integer Nr, integer Von returns integer
local integer Ergebnis1
local integer Ergebnis2
// Geprüft
set Ergebnis1 = ( ( Wert1 * udg_Interpolation[( Nr * ( udg_Size / Von ) )] ) / udg_Interpolation_Max )
set Ergebnis2 = ( ( Wert2 * (udg_Interpolation_Max - udg_Interpolation[( Nr * ( udg_Size / Von ) )] ) ) / udg_Interpolation_Max )
// call DisplayTextToForce( GetPlayersAll(),"-----------------------")
// call DisplayTextToForce( GetPlayersAll(),"Wert1: " + I2S(Wert1))
// call DisplayTextToForce( GetPlayersAll(),"Wert2: " + I2S(Wert2))
// call DisplayTextToForce( GetPlayersAll(),"Nr: " + I2S(Nr))
// call DisplayTextToForce( GetPlayersAll(),"Von: " + I2S(Von))
// call DisplayTextToForce( GetPlayersAll(),"Ergebnis1:" + I2S(Ergebnis1))
// call DisplayTextToForce( GetPlayersAll(),"Ergebnis2:" + I2S(Ergebnis2))
// call DisplayTextToForce( GetPlayersAll(),"Ges:" + I2S(Ergebnis1 + Ergebnis2))
// call DisplayTextToForce( GetPlayersAll(),"-----------------------")
return (Ergebnis1 + Ergebnis2)
endfunction
function Berechne takes integer X, integer Y returns integer
local integer Ergebnis
local integer WertX0
local integer WertX1
local integer I_X0
local integer I_X1
local integer I_Y0
local integer I_Y1
local integer Level
local integer Field_Size
local integer Field_DataSize
local integer Max
//-----------------------
set Level = 2
set Max = 500
set Field_Size = (udg_Size / Level)
set Field_DataSize = ((udg_DataSize-1) / Level)
set I_X0 = Field_DataSize*(X / Field_Size) // ok
set I_X1 = I_X0 + Field_DataSize // ok
set I_Y0 = Field_DataSize*(Y / Field_Size) // ok
set I_Y1 = I_Y0 + Field_DataSize // ok
//call DisplayTextToForce( GetPlayersAll(), ((("P1( " + I2S(I_X0)) + (" / " + I2S(I_Y0))+ " ) P2( ")+ (I2S(I_X1) + (" / " + (I2S(I_Y1) + " )")))))
set WertX0 = Interpoliere(GetValue(I_X0,I_Y0),GetValue(I_X1,I_Y0),ModuloInteger(X , Field_Size),Field_Size)
set WertX1 = Interpoliere(GetValue(I_X0,I_Y1),GetValue(I_X1,I_Y1),ModuloInteger(X , Field_Size),Field_Size)
set Ergebnis = (Interpoliere(WertX0,WertX1,ModuloInteger(Y , Field_Size),Field_Size) / 2)
//--------------------------------------
set Level = 4
set Max = Max + 1000
set Field_Size = (udg_Size / Level)
set Field_DataSize = ((udg_DataSize-1) / Level)
set I_X0 = Field_DataSize*(X / Field_Size) // ok
set I_X1 = I_X0 + Field_DataSize // ok
set I_Y0 = Field_DataSize*(Y / Field_Size) // ok
set I_Y1 = I_Y0 + Field_DataSize // ok
//call DisplayTextToForce( GetPlayersAll(), ((("P1( " + I2S(I_X0)) + (" / " + I2S(I_Y0))+ " ) P2( ")+ (I2S(I_X1) + (" / " + (I2S(I_Y1) + " )")))))
set WertX0 = Interpoliere(GetValue(I_X0,I_Y0),GetValue(I_X1,I_Y0),ModuloInteger(X , Field_Size),Field_Size)
set WertX1 = Interpoliere(GetValue(I_X0,I_Y1),GetValue(I_X1,I_Y1),ModuloInteger(X , Field_Size),Field_Size)
set Ergebnis = Ergebnis + Interpoliere(WertX0,WertX1,ModuloInteger(Y , Field_Size),Field_Size)
//--------------------------------------
set Level = 16
set Max = Max + 1000
set Field_Size = (udg_Size / Level)
set Field_DataSize = ((udg_DataSize-1) / Level)
set I_X0 = Field_DataSize*(X / Field_Size) // ok
set I_X1 = I_X0 + Field_DataSize // ok
set I_Y0 = Field_DataSize*(Y / Field_Size) // ok
set I_Y1 = I_Y0 + Field_DataSize // ok
//call DisplayTextToForce( GetPlayersAll(), ((("P1( " + I2S(I_X0)) + (" / " + I2S(I_Y0))+ " ) P2( ")+ (I2S(I_X1) + (" / " + (I2S(I_Y1) + " )")))))
set WertX0 = Interpoliere(GetValue(I_X0,I_Y0),GetValue(I_X1,I_Y0),ModuloInteger(X , Field_Size),Field_Size)
set WertX1 = Interpoliere(GetValue(I_X0,I_Y1),GetValue(I_X1,I_Y1),ModuloInteger(X , Field_Size),Field_Size)
set Ergebnis = Ergebnis + Interpoliere(WertX0,WertX1,ModuloInteger(Y , Field_Size),Field_Size)
//--------------------------------------
set Level = 32
set Max = Max + 2000
set Field_Size = (udg_Size / Level)
set Field_DataSize = ((udg_DataSize-1) / Level)
set I_X0 = Field_DataSize*(X / Field_Size) // ok
set I_X1 = I_X0 + Field_DataSize // ok
set I_Y0 = Field_DataSize*(Y / Field_Size) // ok
set I_Y1 = I_Y0 + Field_DataSize // ok
//call DisplayTextToForce( GetPlayersAll(), ((("P1( " + I2S(I_X0)) + (" / " + I2S(I_Y0))+ " ) P2( ")+ (I2S(I_X1) + (" / " + (I2S(I_Y1) + " )")))))
set WertX0 = Interpoliere(GetValue(I_X0,I_Y0),GetValue(I_X1,I_Y0),ModuloInteger(X , Field_Size),Field_Size)
set WertX1 = Interpoliere(GetValue(I_X0,I_Y1),GetValue(I_X1,I_Y1),ModuloInteger(X , Field_Size),Field_Size)
set Ergebnis = Ergebnis + (2*Interpoliere(WertX0,WertX1,ModuloInteger(Y , Field_Size),Field_Size))
return (Ergebnis*1000)/Max
endfunction
function Lichtung takes integer X, integer Y returns nothing
// gernerierte Jass-Funktion
set udg_Wert[(X-2) + ( (Y+0) * (udg_DataSize-1) )] = 0
set udg_Wert[(X-1) + ( (Y-1) * (udg_DataSize-1) )] = 0
set udg_Wert[(X-1) + ( (Y+0) * (udg_DataSize-1) )] = 0
set udg_Wert[(X-1) + ( (Y+1) * (udg_DataSize-1) )] = 0
set udg_Wert[(X+0) + ( (Y-2) * (udg_DataSize-1) )] = 0
set udg_Wert[(X+0) + ( (Y-1) * (udg_DataSize-1) )] = 0
set udg_Wert[(X+0) + ( (Y+0) * (udg_DataSize-1) )] = 0
set udg_Wert[(X+0) + ( (Y+1) * (udg_DataSize-1) )] = 0
set udg_Wert[(X+0) + ( (Y+2) * (udg_DataSize-1) )] = 0
set udg_Wert[(X+1) + ( (Y-1) * (udg_DataSize-1) )] = 0
set udg_Wert[(X+1) + ( (Y+0) * (udg_DataSize-1) )] = 0
set udg_Wert[(X+1) + ( (Y+1) * (udg_DataSize-1) )] = 0
set udg_Wert[(X+2) + ( (Y+0) * (udg_DataSize-1) )] = 0
// Rand Bereich
set udg_Wert[(X-2) + ( (Y-2) * (udg_DataSize-1) )] = GetRandomInt(1, 500)
set udg_Wert[(X-2) + ( (Y-1) * (udg_DataSize-1) )] = GetRandomInt(1, 500)
set udg_Wert[(X-2) + ( (Y+1) * (udg_DataSize-1) )] = GetRandomInt(1, 500)
set udg_Wert[(X-2) + ( (Y+2) * (udg_DataSize-1) )] = GetRandomInt(1, 500)
set udg_Wert[(X-1) + ( (Y-2) * (udg_DataSize-1) )] = GetRandomInt(1, 500)
set udg_Wert[(X-1) + ( (Y+2) * (udg_DataSize-1) )] = GetRandomInt(1, 500)
set udg_Wert[(X+1) + ( (Y-2) * (udg_DataSize-1) )] = GetRandomInt(1, 500)
set udg_Wert[(X+1) + ( (Y+2) * (udg_DataSize-1) )] = GetRandomInt(1, 500)
set udg_Wert[(X+2) + ( (Y-2) * (udg_DataSize-1) )] = GetRandomInt(1, 500)
set udg_Wert[(X+2) + ( (Y-1) * (udg_DataSize-1) )] = GetRandomInt(1, 500)
set udg_Wert[(X+2) + ( (Y+1) * (udg_DataSize-1) )] = GetRandomInt(1, 500)
set udg_Wert[(X+2) + ( (Y+2) * (udg_DataSize-1) )] = GetRandomInt(1, 500)
endfunction
Name | Type | is_array | initial_value |
Ausstehendes_Holz | real | Yes | |
Baum_des_Lebens | unit | Yes | |
Berechneter_Wert | integer | No | |
Button_Auswahl | button | Yes | |
Button_Gold | button | No | |
Button_Holz | button | No | |
DataSize | integer | No | 33 |
Ende | boolean | No | false |
ErstellugnsOrt | location | No | |
Gebiet_Basis | rect | Yes | |
Gebiet_Platz0_in_B | rect | Yes | |
Gebiet_Platz1_in_B | rect | Yes | |
Gebiet_Platz2_in_B | rect | Yes | |
GoldMenu | dialog | No | |
Hauptmenu | dialog | No | |
Held | unit | Yes | |
Holzmenu | dialog | No | |
Interpolation | integer | Yes | |
Interpolation_Max | integer | No | 1000 |
Kontrollpunkte | integer | Yes | |
Loop10Sek_SpielerNr | integer | No | |
MultiBoad_SpielerPos | integer | Yes | |
MultiBoad_TeamPos | integer | Yes | |
MultiBoard | multiboard | No | |
Multiboard_Index | integer | No | |
Regenerator | unit | Yes | |
Size | integer | No | 64 |
SpalteNr | integer | No | 0 |
Spieler_in_Team | integer | Yes | |
SpielerAnzahl | integer | No | 9 |
SpielerNr | integer | No | |
Spielerstatus | integer | Yes | 0 |
Start_Gold | integer | No | 0 |
Start_Holz | integer | No | 1200 |
StartButton | button | No | |
Team_ist_besiegt | boolean | Yes | |
TeamNr | integer | No | |
TeamPos | integer | Yes | |
Test_String | string | No | |
Test_Wert | integer | No | |
Wartedialog | dialog | No | |
Weg_Faktor | real | Yes | |
Weg_Punkt | location | No | |
Weg_Punkt_X | real | Yes | |
Weg_Punkt_Y | real | Yes | |
Weg_t | real | No | |
Weg_t2 | real | No | |
Wert | integer | Yes | 0 |
Ziel_X | real | No | |
Ziel_Y | real | No |