Buenas de nuevo a todo lector!
Ante todo decir que en esto de JASS soy bastante nuevo.
Llebo tiempo intentando mejorar mi save/load system, Creando un documento de texto en la carpeta de origen del Warcraft 3 que contenga los -save del jugador, como el que usan los mapas como GoH: ("Guilds of Hyppos"), Googleando y explorando por otros mapas encontre una función para generar este documento en mi sistema Save/load system:
EL CUAL SERIA: 1) Implementar esta función en el cabecero del Script del mapa.
- Código:
-
[jass]function CreateTextFile takes string saveCode returns nothing
local integer p = GetPlayerId(GetTriggerPlayer())+1
local string heroName = GetUnitName(udg_TempUnit)
local integer heroLevel = GetHeroLevel(udg_TempUnit)
call PreloadGenClear()
call PreloadGenStart()
// The line below creates the log
// Right now, this is:
// Hero: (hero name)
// Level: (hero level)
// Code: -load XXXX
call Preload("\r\n\t\t\t\tHero: " + heroName + "\r\n\t\t\t\t" + "Level: " + I2S(heroLevel) + "\t\t\r\n\t\t\t\t" + "Code: -load " + udg_Code + "\r\n\n\t\t ")
// The line below creates the file at the specified location
// Right now, this is:
// "Warcraft III\MapName\(hero name) - (hero level)"
call PreloadGenEnd("MapName\\" + heroName + " - " + I2S(heroLevel) + ".txt")
endfunction[/jass]
2) Buscar en el Script del mapa, el Return c dentro de la función save_Encode y encima escribir
call CreateTextFile(c) quedando la funcion tal que así:
- Código:
-
[jass]function SaveLoad_EncodeValues takes nothing returns string
local integer i
local integer j
local integer k
local integer l
local integer m
local integer CodeLength = StringLength(udg_SaveLoad_Alphabet)
local integer array a
local string buffer = ""
local string c = ""
local integer skip = 0
local integer CONST = 1000000
local string abc = "0123456789"
set i = 0
loop
set i = i + 1
exitwhen i > udg_SaveCount
set buffer = buffer + I2S(udg_Save[i]) + "-"
endloop
set buffer = buffer + I2S(SaveLoad_EncodeVerify(buffer))
if udg_Save[1] == 0 then
set buffer = "-" + buffer
endif
set i = 0
loop
set a[i] = 0
set i = i + 1
exitwhen i >= 100
endloop
set m = 0
set i = 0
loop
set j = 0
loop
set a[j] = a[j] * 11
set j = j + 1
exitwhen j > m
endloop
set l = 0
set c = SubString(buffer,i,i + 1)
loop
exitwhen SubString(abc,l,l + 1) == c
set l = l + 1
exitwhen l > 9
endloop
set a[0] = a[0] + l
set j = 0
loop
set k = a[j] / CONST
set a[j] = a[j] - k * CONST
set a[j + 1] = a[j + 1] + k
set j = j + 1
exitwhen j > m
endloop
if k > 0 then
set m = m + 1
endif
set i = i + 1
exitwhen i >= StringLength(buffer)
endloop
set buffer = ""
loop
exitwhen m < 0
set j = m
loop
exitwhen j <= 0
set k = a[j] / CodeLength
set a[j - 1] = a[j - 1] + (a[j] - k * CodeLength) * CONST
set a[j] = k
set j = j - 1
endloop
set k = a[j] / CodeLength
set i = a[j] - k * CodeLength
set buffer = buffer + SubString(udg_SaveLoad_Alphabet,i,i + 1)
set a[j] = k
if a[m] == 0 then
set m = m - 1
endif
endloop
set i = StringLength(buffer)
set skip = 0
set c = ""
loop
set i = i - 1
set c = c + SubString(buffer,i,i + 1)
set skip = skip + 1
if skip == 4 and i > 0 then
set c = c + "-"
set skip = 0
endif
exitwhen i <= 0
endloop
[color=#ff0000]call CreateTextFile(c)[/color]
return c
endfunction[/jass]
3) Y por ultimo creando un "Custom Script" de llamada justo después de que se muestra el mensaje de código. el cual seria:
- Código:
-
Custom Script: call CreateTextFile()
.
MI PROBLEMA!Despues de explicar todo esto,Necesito ayuda con el disparador de llamada del Custom Script: call CreateTextFile. Por que lo coloque donde lo coloque me el siguiente error:

Y ya no se si es de el script de la llamada ó que en la función create txt file e de cambiar
udg_Code por otro valor.
Puede alguien ayudarme con este ERROR parece que soy demasiado Noob en JASS para esto.
Y no me gusta sentirme limitado a la hora de crear un mapa. Ante todo gracias por tu tiempo por leer mi post, puedan ayudarme o no. Y por ultimo si fuera de ayuda podria enviar una copia de mi save/load + Create txt file si fuera de ayuda para solucionar esto.
"GRACIAS"